我在这里阅读create anonymous types at runtime in c#
的方法AssemblyBuilder dynamicAssembly =
AppDomain.CurrentDomain.DefineDynamicAssembly(new AssemblyName("MyDynamicAssembly"),
AssemblyBuilderAccess.Run);
string propertyName = "prp_1";
//Type propertyType = new Type();
ModuleBuilder dynamicModule = dynamicAssembly.DefineDynamicModule("MyDynamicAssemblyModule");
TypeBuilder dynamicType = dynamicModule.DefineType("MyDynamicType", TypeAttributes.Public);
PropertyBuilder property =
dynamicType.DefineProperty(
propertyName,
System.Reflection.PropertyAttributes.None,
propertyType, // idk what to put here?
new[] { propertyType } // and here ?
);
//call this first
AddProperty(dynamicType, propertyName, propertyType );
//then we ' ll dynamic type
Type myType = dynamicType.CreateType();
被称为
的函数public static void AddProperty(TypeBuilder typeBuilder, string propertyName, Type propertyType)
代码中有propertyType我不知道该放什么。 我可以吗
type mytype = \\typefree?
谢谢。
答案 0 :(得分:1)
编辑:这个答案对于这个问题是正确的,但问题已经改变了。
我认为你正在寻找一个对象类型,所以如果属性是一个字符串,那么你将使用
typeof(string)
代替propertyType。啊抱歉错过了匿名位。您可以尝试使用动态
typeof(dynamic)
与
具有相同的效果typeof(object)
但是动态不是类型安全的,所以任何不存在的属性都不会在运行时被拾取,而且两者都有点像'把任何东西放在这里'。最安全和最好的事情是为匿名类型创建一个类。