使用泛型和工作流活动基类进行错误编译

问题描述

| 有人知道为什么无法编译吗?该问题与从工作流活动继承有关。
public class MyActivityBase<T> : System.Workflow.ComponentModel.Activity
{
    public T MyProperty { get; set; }
}
编译错误信息 错误1无法创建\'... Activities.Common.MyActivityBase`1 \'类型的活动。 System.ArgumentException:因为Type。** ContainsGenericParameters为true **,所以无法创建... Activities.Common.MyActivityBase`1 [T]的实例。    在System.RuntimeType.CreateInstanceCheckThis()    在System.RuntimeType.CreateInstanceSlow处(布尔publicOnly,布尔skipCheckThis,布尔fillCache)    在System.RuntimeType.CreateInstanceDefaultCtor处(布尔publicOnly,布尔skipVisibilityChecks,布尔skipCheckThis,布尔fillCache)    在System.Activator.CreateInstance(Type type,Boolean nonPublic)    在System.Workflow.ComponentModel.Compiler.XomlCompilerHelper.InternalCompileFromDomBatch(String []文件,String [] codeFiles,WorkflowCompilerParameters参数,WorkflowCompilerResults结果,字符串localAssemblyPath) 谢谢, Ť     

解决方法

        您的类型正在通过反射实例化。无论代码执行什么实例化,都不知道如何使用泛型参数实例化类型。因此,它将引发异常。 不幸的是,如果您想直接使用
MyActivityBase<T>
,实际上什么也做不了。不过,您也许可以通过使用基类的具体子实现来获得(类似于
public class MyActivityString : MyActivityBase<string>
)