我從加載的程序集讀取類型,例如:反思 - 調用構造函數參數
var someType = loadedAssemblies
.Where(a => a != null && a.FullName.StartsWith("MY."))
.SelectMany(a => a.GetTypes())
.Distinct()
.ToArray()[0];
如果counstructor有參數,我能讀懂他們:
ParameterInfo[] parameters = classType.GetConstructors()[0].GetParameters();
我想調用默認的構造函數參數值或者如果參數是枚舉,則使用第一個枚舉值。 如果只有一個參數,它是枚舉,它的工作原理是這樣的:
object curObject = Activator.CreateInstance(classType, new object[] { parameters[0].ParameterType.GetEnumValues().GetValue(0) });
我怎麼能做到這一點的時候有更多的參數呢? 我需要創建對象讀取屬性:
var propertyInfo = someType.GetProperty("EntityType");
string entityType = propertyInfo.GetValue(curObject, null).ToString();
嗨,Fabjan,謝謝你的解決方案。有一個問題。 我只有classType,我在運行時讀取。我不知道在編譯時的對象(類)名稱。你的代碼:var curObject = MyFactory.MyCreateInstance
我已經更新了我的答案以及DotNetfiddle上的代碼示例 – Fabjan
謝謝,它完美無缺。你知道constructor.Invoke與Activator.CreateInstance之間的區別嗎? – Simon