我目前正在使用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不匹配..