2009-02-27 72 views
1

我是一個vb.net新手,所以請耐心等待。是否有可能在visual basic(我使用Visual Basic 2005)中爲類創建屬性(或屬性)?所有的網絡搜索元編程讓我無處可尋。這裏有一個例子來說明我的意思。動態屬性在Visual Basic中的類

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?

謝謝! Amit

回答

0

不 - 這不可能。你需要像「method_missing」這樣的Ruby來處理未知的.Foo調用。我相信C#4承諾會提供這方面的內容。

3

不可能在運行時使用新屬性修改類。 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」)。

我相信這可能與分析API有關,但它可能不是您要查找的內容。

+0

序列化,可以很有趣。 – 2009-02-27 04:23:52