有人知道为什么这不会编译吗?问题与从工作流活动继承有关。
public class MyActivityBase<T> : System.Workflow.ComponentModel.Activity
{
public T MyProperty { get; set; }
}
编译错误消息
错误1无法创建类型为"的活动。。。Activities.Common.MyActivityBase`1'.System.ArgumentException:无法创建的实例。。。Activities.Common.MyActivityBase`1[T],因为Type.**ContainsGenericParameters为true**。在System.RuntimeType.CreateInstanceCheckThis()在System.RuntimeType.CreateInstanceSlow(布尔publicOnly,布尔skipCheckThis,布尔fillCache)在System.RuntimeType.CreateInstanceDefaultCtor(布尔publicOnly,布尔skipVisibilityChecks,布尔skipCheckThis,布尔fillCache)位于System.Activator.CreateInstance(类型类型,布尔值非公共)位于System.Workflow.ComponentModel.Compiler.XomlCompilerHelper.InternalCompileFromDomBatch(String[]文件,String[]代码文件,WorkflowCompilerParameters参数,WorkflowCompilarResults结果,StringlocalAssemblyPath)
谢谢,T
您的类型正在通过反射进行实例化。无论代码在做什么,实例化都不知道如何用泛型参数实例化类型。因此,它抛出一个Exception。
不幸的是,如果您想直接使用MyActivityBase<T>
,您实际上无能为力。您可能可以通过使用基类的具体子实现(类似于public class MyActivityString : MyActivityBase<string>
)