假設我有一個.NET工作流基礎(WF)SequenceActivity
類下面的「輸出」屬性:Workflow Foundation(WF) - 爲什麼使用SetValue()將一個DependencyProperty設置爲一個COM對象會引發一個ArgumentException?
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
)在ArgumentException
結果用於第二帕ameter(具有this.Workspace
值):
依賴屬性
Workspace
的[…].IWorkspace
類型不匹配值的類型System.__ComObject
。
當我註冊依賴屬性與typeof(object)
代替typeof(IWorkspace)
作爲第二個參數(德國翻譯,英文異常文本可能稍有不同)
,代碼執行就好了。但是,這將導致可能性將任何值分配給依賴項屬性,而我不希望這樣做。
在我看來,WF依賴項屬性不適用於COM互操作對象。
有沒有人有解決方案?
順便說一句,轉移到.NET 4.0並使用'動態'(它*可能*解決問題)目前不是一種選擇。 – stakx 2010-04-19 07:20:15