私は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 :エットundantagsfel HARinträffat私 måletための専用aktivering ----> System.TypeInitializationException:。 PlaynGO.Cashier.Daため Typinitieraren ta.CashierDCutlöste ett undantag。 ----> System.NullReferenceException: オブジェクト参照は、 までエンジェルオブジェクトがありません。 vid System.RuntimeMethodHandle。 InvokeConstructor(IRuntimeMethodInfo 方法、[]引数、REF SignatureStruct署名、RuntimeType declaringType物体)VID System.Reflection.RuntimeConstructorInfo.Invoke(のBindingFlags invokeAttr、バインダーバインダー、オブジェクト[] パラメータのCultureInfo培養)VID システム.RuntimeType.CreateInstanceImpl VID PlaynGO.Dbml VID System.Activator.CreateInstance(引数タイプ タイプ、オブジェクト[]()のBindingFlags bindingAttr、バインダーバインダーは、[] activationAttributesオブジェクト、[] 引数、CultureInfoカルチャオブジェクト)。 Reflexion.b _3(タイプ t)はI Reflexion.cs:ライン23 VID System.Linq.Enumerable.WhereSelectArrayIterator
2.MoveNext() vid System.Collections.Generic.List
1..ctor(IEnumerableをソース)VID PlaynGO.Dbml.Reflexion.GetInstances(アセンブリ アセンブリ)I Reflexion.cs。ライン23 VID PlaynGO.Dbml.UnitTests.TestReflection.TestGettingTypes() I TestReflection.cs:ライン21 --TypeInitializationException VID PlaynGO.Cashier.Data.CashierDC..ctor(文字列 接続) --NullReferenceException VID PlaynGO。 Cashier.Data.CashierDC..cctor()
私が欲しいコンストラクタto callは次のとおりです。
public CashierDC(string connection) :
base(connection, mappingSource)
MappingSourceはインスタンス化され、インスタンスフィールドです。どこが間違っていますか?私はこの仕事をするために何をしなければなりませんか?
PS。これは.NET 4.0です
エラーメッセージを翻訳してみてください。 –
LOL ..彼は "do do"と言った::) –
cctorは静的コンストラクタではないのですか?それは1つ持っています、もしあなたがそれを投稿することができますか? –