我需要讓我的DataContext的子類,我發現對於躺在附近某處以下功能,它肯定認爲我的子類,但我不能實例化它:(如何爲各種構造函數做Activator.CreateInstance?
public static IEnumerable<T> GetSubclassesFor<T>(Assembly assembly)
{
return (assembly.GetTypes()
.Where(t => t.BaseType == (typeof (T)))
.Select(t => (T) Activator.CreateInstance(t, new object[] {"asdasd"})))
.ToList();
}
我收到以下錯誤信息:
System.Reflection.TargetInvocationException :ETT undantagsfel HARinträffat我 MALET當EN aktivering ----> System.TypeInitializationException: TypinitierarenFÖR PlaynGO.Cashier.Da ta.CashierDCutlöste ett undantag。 ----> System.NullReferenceException: 對象無法訪問到 en instans av ett objekt。 vid System.RuntimeMethodHandle。 InvokeConstructor(IRuntimeMethodInfo 方法,對象[]指定參數時,參考 SignatureStruct簽名,RuntimeType declaringType)VID System.Reflection.RuntimeConstructorInfo.Invoke(的BindingFlags invokeAttr,粘結劑粘結劑,對象[] 參數,CultureInfo的培養物)VID 系統.RuntimeType.CreateInstanceImpl(的BindingFlags bindingAttr,粘結劑粘結劑,對象[] 指定參數時,CultureInfo的文化,對象[] activationAttributes)VID System.Activator.CreateInstance(類型 類型,對象[]參數)VID PlaynGO.Dbml。 Reflexion.b _3(Type 噸)1 Reflexion.cs:線23 VID System.Linq.Enumerable.WhereSelectArrayIterator
2.MoveNext() vid System.Collections.Generic.List
1..ctor(IEnumerable的源)VID PlaynGO.Dbml.Reflexion.GetInstances(大會 組件)1 Reflexion.cs:線23 VID PlaynGO.Dbml.UnitTests.TestReflection.TestGettingTypes() 我TestReflection.cs:線21 --TypeInitializationException VID PlaynGO.Cashier.Data.CashierDC..ctor(字符串 連接) --NullReferenceException VID PlaynGO。 Cashier.Data.CashierDC..cctor()
我想要的構造函數打電話如下:
public CashierDC(string connection) :
base(connection, mappingSource)
MappingSource直接實例化並且是一個實例字段。我哪裏出錯了?我需要做些什麼來完成這項工作?
PS。這是.NET 4.0
請嘗試翻譯錯誤消息。 – 2010-12-02 15:32:28
LOL ..他說「do do」:) :) – 2010-12-02 15:36:00
不是cctor的靜態構造函數嗎?它是否有一個,如果可以,可以發佈嗎? – 2010-12-02 15:38:31