我是vb.net新手,所以请耐心等待我。是否可以在visual basic中创建类的属性(或属性)(我使用的是Visual Basic 2005)?所有关于元编程的网络搜索都让我无处可去。这是一个澄清我的意思的例子。
public class GenericProps
public sub new()
' ???
end sub
public sub addProp(byval propname as string)
' ???
end sub
end class
sub main()
dim gp as GenericProps = New GenericProps()
gp.addProp("foo")
gp.foo = "Bar" ' we can assume the type of the property as string for now
console.writeln("New property = " & gp.foo)
end sub
那么可以定义函数addProp吗?
谢谢! 阿米特
答案 0 :(得分:3)
使用新属性 1 在运行时修改类是不可能的。 VB.Net是一种静态语言,因为它无法在运行时修改它定义的类。你可以用一个属性包模拟你正在寻找的东西。
Class Foo
Private _map as New Dictionary(Of String, Object)
Public Sub AddProperty(name as String, value as Object)
_map(name) = value
End Sub
Public Function GetProperty(name as String) as Object
return _map(name)
End Function
End Class
它不允许以myFoo.Bar的形式直接访问,但您可以调用myFoo.GetProperty(“Bar”)。
1 我相信有可能使用性能分析API,但它可能不是你想要的。
答案 1 :(得分:1)
对于Visual Basic 2008来说,想到了同样的事情。
属性包现在可以帮到我,直到我可以迁移到Visual Basic 2010:
http://blogs.msdn.com/vbteam/archive/2010/01/20/fun-with-dynamic-objects-doug-rothaus.aspx
答案 2 :(得分:0)
不 - 那是不可能的。你需要像“method_missing”这样的Ruby来处理未知的.Foo调用。我相信C#4承诺提供这些方面的东西。