在 Reflection.Emit 中创建 IEnumerable 属性
IEnumerable property creation in Reflection.Emit
我正在尝试使用 Reflection.Emit
.
创建 IEnumerable<AnotherDynamicType>
类型的 属性
我有一个辅助方法可以很好地添加属性,接受类型作为输入:
public void AddProperty(TypeBuilder typeBuilder, string propertyName, Type type)
{
....
}
可以这样调用:
AddProperty(typeBuilder,"MyPropertyName",typeof(string));
但是现在我想在 class 中添加一个 属性:
public IEnumerable<AnotherDynamicType> MyList {get;set;}
如果目标 AnotherDynamicType
也是动态创建的,我如何为调用定义此 属性 的 "Type"?
以下不编译:
AddProperty(typeBuilder,"MyPropertyName",typeof(IEnumerable<typeof(anotherDynamicType)>));
您可以使用 Type.MakeGenericType
:
var anotherTypeEnumerable = typeof(IEnumerable<>)
.MakeGenericType(anotherDynamicType);
我正在尝试使用 Reflection.Emit
.
IEnumerable<AnotherDynamicType>
类型的 属性
我有一个辅助方法可以很好地添加属性,接受类型作为输入:
public void AddProperty(TypeBuilder typeBuilder, string propertyName, Type type)
{
....
}
可以这样调用:
AddProperty(typeBuilder,"MyPropertyName",typeof(string));
但是现在我想在 class 中添加一个 属性:
public IEnumerable<AnotherDynamicType> MyList {get;set;}
如果目标 AnotherDynamicType
也是动态创建的,我如何为调用定义此 属性 的 "Type"?
以下不编译:
AddProperty(typeBuilder,"MyPropertyName",typeof(IEnumerable<typeof(anotherDynamicType)>));
您可以使用 Type.MakeGenericType
:
var anotherTypeEnumerable = typeof(IEnumerable<>)
.MakeGenericType(anotherDynamicType);