问题描述
|
有人知道为什么无法编译吗?该问题与从工作流活动继承有关。
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>
)