【发布时间】:2010-12-02 15:29:23
【问题描述】:
我需要获取我的 DataContext 子类,我发现下面的函数位于某处,它确实找到了我的子类,但我无法实例化它:(
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 har inträffat i målet för en aktivering。 ----> System.TypeInitializationException : 典型代表 PlaynGO.Cashier.Data.CashierDC utlöste ett undantag。 ----> System.NullReferenceException : Objektreferensen har inte angetts until en instans av ett objekt。视频 System.RuntimeMethodHandle.InvokeConstructor(IRuntimeMethodInfo 方法,对象 [] 参数,参考 SignatureStruct 签名,RuntimeType 声明类型)视频 System.Reflection.RuntimeConstructorInfo.Invoke(BindingFlags invokeAttr, Binder 绑定器, Object[] 参数, CultureInfo 文化) vid System.RuntimeType.CreateInstanceImpl(BindingFlags bindingAttr,活页夹活页夹,对象[] 参数,CultureInfo 文化,对象 [] 激活属性) vid System.Activator.CreateInstance(类型 类型,对象 [] 参数) vid PlaynGO.Dbml.Reflexion.b_3(类型 t) i Reflexion.cs:第 23 行视频 System.Linq.Enumerable.WhereSelectArrayIterator
2.MoveNext() vid System.Collections.Generic.List1..ctor(IEnumerable1 collection) vid System.Linq.Enumerable.ToList(IEnumerable1 来源)视频 PlaynGO.Dbml.Reflexion.GetInstances(程序集 程序集)我 Reflexion.cs:第 23 行视频 PlaynGO.Dbml.UnitTests.TestReflection.TestGettingTypes() i TestReflection.cs:第 21 行 --TypeInitializationException vid PlaynGO.Cashier.Data.CashierDC..ctor(String 联系) --NullReferenceException vid PlaynGO.Cashier.Data.CashierDC..cctor()
我要调用的构造函数如下:
public CashierDC(string connection) :
base(connection, mappingSource)
MappingSource 是直接实例化的,是一个实例字段。我哪里错了?我该怎么做才能完成这项工作?
PS。这是 .NET 4.0
【问题讨论】:
-
请尝试翻译错误信息。
-
LOL.. 他说“做”... :)
-
cctor 不是静态构造函数吗?有吗?如果有,可以发一下吗?
标签: c#