使用泛型和工作流活动基类编译时出错



有人知道为什么这不会编译吗?问题与从工作流活动继承有关。

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>

最新更新