dynamic/ExpandoObject方法抛出'未找到类型'Action'的默认成员

本文关键字:类型 Action 成员 默认 ExpandoObject dynamic 方法 | 更新日期: 2023-09-27 18:06:20

我无法在VB.NET中直接调用ExpandoObject上的动态方法。在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'的默认成员'

它工作,如果我把一个调用,但这不是一个选项(这是一个非常简化的moq单元测试的例子,被测试的对象将调用函数,所以我不能改变它们)

是否有一种方法可以在vb.net中设置动态方法,以便我可以在没有调用的情况下调用它?

dynamic/ExpandoObject方法抛出'未找到类型'Action'的默认成员

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

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