【发布时间】:2011-12-20 15:12:43
【问题描述】:
我正在尝试为 register 属性方法提供默认值。这需要一个函数,但作为对象(委托?)传递。代码如下:
protected static propertydata registerproperty(string name, Type type, Func<object> createDefaultValue)
{
return RegisterProperty(name, type, createDefaultValue, false, null);
}
我想调用该 registerproperty 方法,但我不知道如何在 VB.net 中做到这一点。我只需要传递一个新的 Person 对象,我认为这是要走的路:
Public Shared ReadOnly ItemsProperty As PropertyData = RegisterProperty("Items", GetType(IEnumerable(Of Person)), Function() new Person())
这是一个作为函数传递的函数,但我需要它作为对象传递。
对此有什么想法吗?
【问题讨论】:
-
使用
AddressOf运算符。 documentation on VB delegates 包含许多示例。 -
代码大致正确,lambda 是
Func<object>的适当替代品。记录您使用的 Visual Studio 版本。 -
[off-topic] 很高兴在 SO 见到 Raymond。
-
实际问题是有 2 个重载,一个接受 Func