2

IDictionary を次のように拡張しました。

public static T ToClass<T>(this IDictionary<string, string> source) where T : class, new()
{
     T someObject = new T();

     foreach (KeyValuePair<string, string> item in source)
     {
       someObject.GetType().GetProperty(item.Key).SetValue(someObject, item.Value, null);
     }

     return someObject;
}

そして、私はこの方法を使用するのに問題があります。次のように試しました:

TestClass test = _rep.Test().ToClass<TestClass>;

また、デリゲート以外の型には変換できないと書かれています。

正しい呼び方は?

/ラッセ

  • アップデート *

コードを次のように変更:

public static T ToClass<T>(this IDictionary<string, string> source) where T : class, new()
{
   Type type = typeof(T);
   T ret = new T();

   foreach (var keyValue in source)
   {
      type.GetProperty(keyValue.Key).SetValue(ret, keyValue.Value, null);
   }

   return ret;
}
4

1 に答える 1

5

最後に括弧がありません:

TestClass test = _rep.Test().ToClass<TestClass>();

コンパイラは、メソッド (デリゲート) を変数に割り当てたいと考えました。


someObject.GetType()また、を使用する代わりにtypeof(T)、ループの外側に変数を作成し、それも再利用します。

于 2011-12-22T08:24:36.440 に答える