私は2つの汎用関数を持っています。最初のものでは、辞書を埋めて、次の汎用関数を呼び出して辞書をオブジェクトに変換します。汎用関数から動的オブジェクトを返す方法 - エラー
ここでは、特定のオブジェクトに指定するのではなく、T
汎用オブジェクトに戻す必要があります。私はこれを達成することができません。これは、エラーを示しています
The type T must be a reference type in order to use it as a parameter "T" in the generic method or type..
public T Fill<T>()
{
Dictionary<string,string> d = new Dictionary<string,string>();
//filled dictionary -----
SomeClass dObject = ToObject<SomeClass>(d);
//[---Here I need to return a dynamic object rather than fixing to SomeClass--]
T dObject = ToObject<T>d); ///* Not able to acheive this *///
return (T)Convert.ChangeType(dObject, typeof(T));
}
private T ToObject<T>(IDictionary<string, string> dict)
where T : class,new()
{
T t = new T();
PropertyInfo[] properties = t.GetType().GetProperties();
//--- code to convert object to dictionary
return t;
}
'Fill'メソッドに 'class'と' new() '制約を追加して、' ToObject '関数と一致するようにする必要があります。 –
DavidG
私は今それを追加しましたpublic T Fill()T:class、new()でも同じエラーです –
いいえ、 'dObject'が2度宣言されたので、違うエラーになりました。 – DavidG