Workflow Foundation (WF) -- Why does setting a DependencyProperty to a COM object using SetValue() t
Posted
by stakx
on Stack Overflow
See other posts from Stack Overflow
or by stakx
Published on 2010-04-15T20:43:37Z
Indexed on
2010/04/15
20:53 UTC
Read the original article
Hit count: 487
Assume that I have a .NET Workflow Foundation (WF) SequenceActivity
class with the following property:
public IWorkspace Workspace { get; set; }
// ^^^^^^^^^^
// important: this is a COM interface type!
public static DependencyProperty WorkspaceProperty = DependencyProperty.Register(
"Workspace",
typeof(IWorkspace),
typeof(FoobarActivity)); // <-- this activity class
This activity executes some code that sets both of the above like this:
this.Workspace = ...; // exact code not relevant; property set to a COM object
SetValue(WorkspaceProperty, this.Workspace);
The last line (which makes the call to SetValue
) results in an ArgumentException
for the second parameter (having the value of this.Workspace
):
Type
[…].IWorkspace
of dependency propertyWorkspace
does not match the value's typeSystem.__ComObject
.
(translated from German, the English exception text might differ slightly)
As soon as I register the dependency property with typeof(object)
instead of typeof(IWorkspace)
as the second parameter, the code executes just fine. However, that would result in the possibility to assign just about any value to the dependency property, and I do not want that.
It seems to me that WF dependency properties don't work for COM interop objects.
Does anyone have a solution to this?
© Stack Overflow or respective owner