使用Activator创建泛型类型的实例,然后将新对象分配给导致问题的属性TargetException

时间:2014-05-11 23:15:58

标签: c# reflection

我目前正在使用Activator(Activator.CreateInstance(myType))根据属性的类型生成一个对象..基本上是这样的:

var x = Activator.CreateInstance(myProperty.PropertyType)

属性是泛型类型, 稍后我还创建了此属性所在类的实例,并将x的值赋给target属性。 只需这样做:

targetProperty.SetValue(model,x);

问题在于我出于某种原因使用Activator获得的类型与targetProperty不同..在这种情况下,我的targetProperty属于以下类型:{UDev.Framework.Models.Definitions.UDevProperty 1 [System.String] Firstname}` 在这种情况下,x的类型为:

{UDev.Framework.Models.Definitions.UDevProperty<string>}

模型属于以下类:

public class DummyModel
    {
        public UDevProperty<string> Firstname { get; set; }
    }

并且使问题更加清晰......如上所示..属性Firstname的实际类型是UDevProperty,而“生成的”x对象也是UDevProperty<string>类型。似乎一旦我尝试将x分配给Firstname属性,它就需要一个类型为{UDev.Framework.Models.Definitions.UDevProperty的对象1 [System.String] Firstname}` 有关如何解决此问题的任何想法? 我有点不知道为什么激活器生成的类型与targetproperty-type不匹配..

0 个答案:

没有答案