「ターゲット・タイプと一致していないオブジェクト」PropertyInfoインスタンスのエラーの値の代入のC#

StackOverflow https://stackoverflow.com/questions/755646

  •  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);
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top