可能很簡單,但無法弄清楚。我在運行時加載程序集並瀏覽一些類併爲其屬性生成輸入控件。要在運行時創建一個對象的實例,我正在使用:如何在運行時使用反射創建值類型或字符串類型對象
object o = PropertyType.GetConstructor(BindingFlags.Instance | BindingFlags.NonPublic | BindingFlags.Public, null, Type.EmptyTypes,null).Invoke(null);
它對於類類型正常工作。當這個類型是一個數組時,我使用
object o = PropertyType.Type.GetConstructor(new Type[] { typeof(int) }).Invoke(new object[] { 0 });
這也很好。但是當涉及到字符串類型或值類型GetConstructor.Invoke不起作用。我也試過Activator.CreateInstance,這也沒有工作。
感謝Jon,我編輯了我的問題,並不是說string是一個值類型...那麼字符串實例化怎麼樣? – 2010-06-28 15:38:43
@Erkan:我編輯了我的答案。你想創建什麼字符串?如果你選擇一個實際存在的構造函數,你當然可以用反射來調用它 - 但是當然你需要提供參數的值...... – 2010-06-28 16:04:44
只是想實例化一個類型爲string的動態類屬性,但是我不想要創建的對象中的空值。所以我想我需要在類中爲字符串類型屬性做特殊情況。仍然不清楚如何從字符串類型類屬性創建對象實例。因爲我會做一個特例:if(property.PropertyType == typeof(string))object o =「」;足夠嗎? – 2010-06-28 16:43:31