如何解决使用泛型和工作流活动基类进行错误编译
| 有人知道为什么无法编译吗?该问题与从工作流活动继承有关。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>
)
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。