VB.Net:将属性作为参数传递而不将属性名称作为字符串传递?

时间:2014-09-05 15:25:48

标签: .net vb.net properties

我想访问另一个方法中的属性,不用将属性名称作为字符串传递。这个要求有两个原因:

  1. 我无法传递属性值,因为我可能不想评估它,而是从缓存中检索它(对于某些属性,缓存在我的设置中会更有效)。
  2. 我不想将名称作为字符串传递,因为如果字符串无效,则不会引发编译时错误。
  3. 经过几个小时的搜索,我没有找到明确的答案(这让我想知道是否存在!)。到目前为止,我已经探索了以下选项:

    • 使用 ByRef - 这无法访问媒体资源名称。
    • 使用反射 - 这需要将属性名称作为字符串传入,我想避免(来自Alois at GeeksWithBlogs)。
    • 使用委派 - 这看起来是最可能的方法,但不支持属性(来自a thread at Extreme.NetTalk)。

    下面是一个过于简化的演示,说明如果可以在委托中使用属性,我将如何实现它:

    Delegate Property FunctionName() As String
    
    Public Function GetPropName(ByVal prop As FunctionName) As String
        Return prop.Method.Name
    End Function
    
    Public Sub Test()
        Dim x As New MyType()
        ' This should print 'Definition'
        Debug.Print(GetPropName(AddressOf x.Definition))
    End Sub
    

    完全限定的问题:是否有办法将属性作为参数传递 - 以允许访问其名称和值的格式 - 而不将属性名称作为字符串传递?< /强>

0 个答案:

没有答案