2010-12-02 62 views
2

我需要讓我的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

+0

請嘗試翻譯錯誤消息。 – 2010-12-02 15:32:28

+0

LOL ..他說「do do」:) :) – 2010-12-02 15:36:00

+0

不是cctor的靜態構造函數嗎?它是否有一個,如果可以,可以發佈嗎? – 2010-12-02 15:38:31

回答

2

TargetInvocationException指示它正在調用的構造函數已引發異常。也許這是由於您傳遞給連接字符串的實際值。您可能想要嘗試使用調試器並在構造函數中設置一個斷點,並使用連接字符串,並(1)確保正在調用它並(2)確定異常發生的位置。

5

我認爲你的錯誤是別的。如果Activator.CreateInstance找不到您的構造函數,您將得到MissingMethodException而不是TargetInvocationException。我懷疑你正試圖實例化的實際類中還有其他錯誤。

相關問題