當此功能使用該爲什麼使用Activator.CreateInstance時需要定義無參數構造函數?
Activator.CreateInstance()
public static List<IType> GetTypeList()
{
List<IType> types = new List<IType>();
types.AddRange(from assembly in AppDomain.CurrentDomain.GetAssemblies()
from t in assembly.GetTypes()
where t.IsClass && t.GetInterfaces().Contains(typeof(IType))
select Activator.CreateInstance(t) as IType);
return types;
}
如果我的每一個類實現ITYPE如果我定義一個構造函數參數,但並沒有明確寫出默認的構造函數的它抱怨
MissingMethodException未處理 「沒有爲此對象定義無參數構造函數」。
但是當我刪除所有構造函數,它工作正常,沒有錯誤,即使我也沒有明確寫出默認的構造函數。
我認爲默認參數的構造函數總是在那裏,即使你沒有把它定義
+1。您還可以使用將參數傳遞給構造函數的[CreateInstance](http://msdn.microsoft.com/zh-cn/library/wcxyzt4d%28v=vs.110%29.aspx)。 –
其實你可以做'Activator.CreateInstance(typeof(MyClass),42,123);' – Lee
@AlexeiLevenkov謝謝,只是加上我自己:) – TypeIA