dynamic / ExpandoObject方法抛出'没有为类型' Action'找到默认成员。

时间:2014-06-02 16:13:42

标签: c# vb.net dynamic expandoobject

我无法在ExpandoObject上获得可在VB.NET中直接调用的动态方法。在C#中,以下工作:

dynamic obj = new System.Dynamic.ExpandoObject();
var called = false;

obj.ForceRefresh = new Action(() => called = true);

obj.ForceRefresh();

我认为在vb.net中会有同样的事情:

 Dim called = False
 Dim obj As Object = New Dynamic.ExpandoObject

 obj.ForceRefresh = New Action(Sub() called = True)

 obj.ForceRefresh() 'No default member found for type 'Action'.
 obj.ForceRefresh.Invoke() 'this works

obj.ForceRefresh抛出'找不到类型为'Action'的默认成员

如果我调用Invoke,它就可以工作了,但这不是一个选项(这是一个非常简单的moq单元测试示例,被测试的对象将调用函数,因此我无法更改它们)

有没有办法在vb.net中设置动态方法,所以我可以在没有调用的情况下调用它?

1 个答案:

答案 0 :(得分:1)

似乎并没有解决这个问题 - 你需要使用" Invoke"在VB中调用动态添加的方法。

以下显示C#vs VB示例的Microsoft链接也证实了这一点: http://msdn.microsoft.com/en-ca/library/system.dynamic.expandoobject.aspx?cs-save-lang=1&cs-lang=vb#code-snippet-4