「ターゲット・タイプと一致していないオブジェクト」PropertyInfoインスタンスのエラーの値の代入のC#
-
09-09-2019 - |
質問
(同じ名前のプロパティを持っていますが、共通の基本クラスから派生するか、共通のインタフェースを実装していないオブジェクトを扱うために)以前のプロジェクトの様々な場所で、その中にこのコードをコピーメソッドを使用しています。
仕事、新しいコードベースの新しい場所 - 今それも上の非常に単純な例の「オブジェクトターゲット・タイプと一致していません」との値の代入...で失敗していますが、それ働いた先週....
public static void Copy(object fromObj, object toObj)
{
Type fromObjectType = fromObj.GetType();
Type toObjectType = toObj.GetType();
foreach (System.Reflection.PropertyInfo fromProperty in
fromObjectType.GetProperties())
{
if (fromProperty.CanRead)
{
string propertyName = fromProperty.Name;
Type propertyType = fromProperty.PropertyType;
System.Reflection.PropertyInfo toProperty =
toObjectType.GetProperty(propertyName);
Type toPropertyType = toProperty.PropertyType;
if (toProperty != null && toProperty.CanWrite)
{
object fromValue = fromProperty.GetValue(fromObj,null);
toProperty.SetValue(toProperty,fromValue,null);
}
}
}
}
private class test
{
private int val;
private string desc;
public int Val { get { return val; } set { val = value; } }
public string Desc { get { return desc; } set { desc = value; } }
}
private void TestIt()
{
test testo = new test();
testo.Val = 2;
testo.Desc = "TWO";
test g = new test();
Copy(testo,g);
}
私は???ばかものだところうまくいけば、誰かが指摘することができます。
解決
試します:
toProperty.SetValue(toObj,fromValue,null);
あなたは代わりにtoProperty
の、ターゲットオブジェクトとしてプロパティ(toObj
)に合格しようとしています。詳細については、あなたがこのの多くを行っている場合は、多分ハイパーディスクリプタを検討し、大幅に低減することができます反射費ます。
他のヒント
は
toProperty.SetValue(toObj,fromValue,null);
所属していません StackOverflow