2015-10-30 36 views
-4

我讀到這裏如何create anonymous types at runtime in c#創建任何類型。鍵入mytpe = typeof(無);?

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) 

有屬性類型在我不知道要放什麼東西在那裏的代碼。 我可以製作

type mytype = \\typefree? 

謝謝。

+1

一個有用的鏈接爲你:http://stackoverflow.com/help/how-to-ask – LBes

+1

「@」後,C#和C#區分大小寫。嘗試/ HTML/Html/ –

+0

henk,真的有效。我也從其他人那裏得到了大量的HTML文本,所以你的心靈折磨很大......太多了 –

回答

1

編輯:這個答案是正確的問題,但問題已被改變。

我認爲你正在尋找一個對象類型,所以如果該屬性是一個字符串,那麼你會在地方屬性類型的使用

typeof(string) 

。很抱歉遺漏了匿名的一點。你可以嘗試使用動態

typeof(dynamic) 

這將對作爲

typeof(object) 

但動態未類型安全的,這樣不存在任何性質相同的效果不會被拾起,直到運行時無一不是有點像說'放任何東西'。最安全和最好的做法是爲匿名類型創建一個類。

+0

第三個選項應該可以工作。但沒有辦法定義匿名的匿名類型。 – Dhunt

相關問題