【发布时间】:2010-04-15 20:43:37
【问题描述】:
假设我有一个具有以下“输出”属性的 .NET Workflow Foundation (WF) SequenceActivity 类:
public IWorkspace Workspace { get; private set; }
// ^^^^^^^^^^
// important: this is a COM interface type!
public static DependencyProperty WorkspaceProperty = DependencyProperty.Register(
"Workspace",
typeof(IWorkspace),
typeof(FoobarActivity)); // <-- this activity class
这个活动执行一些代码,像这样设置上述两个:
this.Workspace = ...; // exact code not relevant; property set to a COM object
SetValue(WorkspaceProperty, this.Workspace);
最后一行(调用SetValue)为第二个参数(值为this.Workspace)生成ArgumentException:
依赖属性
Workspace的类型[…].IWorkspace与值的类型System.__ComObject不匹配。
(翻译自德语,英文异常文本可能略有不同)
只要我使用typeof(object) 而不是typeof(IWorkspace) 作为第二个参数注册依赖属性,代码就可以正常执行。但是,这将导致为依赖属性分配几乎任何值的可能性,我不希望这样。
在我看来,WF 依赖属性不适用于 COM 互操作对象。
有人对此有解决方案吗?
【问题讨论】:
-
顺便说一句,转移到 .NET 4.0 并使用
dynamic(这可能解决问题)目前不是一种选择。
标签: .net-3.5 com workflow-foundation com-interop