.net - 如何访问附加了属性的参数?
问题描述
这是我的代码:
Imports System.Runtime.CompilerServices
<AttributeUsage(AttributeTargets.Parameter)>
Public Class attCallerInfo
Inherits Attribute
Public Sub New(<CallerFilePath> Optional path As String = logOrigin.path_default,
<CallerMemberName> Optional method As String = logOrigin.method_default)
Me.Origin = New logOrigin(path, method)
End Sub
Public ReadOnly Property Origin As logOrigin
End Class
...以及它应该被称为的方式:
Public Sub New(<attCallerInfo()> Optional ByRef origin As logOrigin = Nothing)
代码信息:
- 此属性附加到多个记录器,即我想知道的记录内容。
- 路径和方法让我清楚地知道发生了什么事情。
- logOrigin 是一个类,它将整个路径和方法名称转换为更适合我的任务的名称。
我现在如何实现,我的 attCallerInfo 被调用,获取文件和成员并将它们传递给我的参数源(第二个代码块)?
感谢 Daedra 的帮助
解决方案
我不会用另一个属性解决这个问题,而是一个普通的类,像这样:(我Foo
在我的例子中称你没有进一步指定的包含构造函数的类......)
Public Class Foo
Public Sub New(<CallerFilePath> Optional path As String = Nothing, <CallerLineNumber> Optional lineNumber As Int32 = 0, <CallerMemberName> Optional method As String = Nothing)
Me.New(New CallerInfo(path, lineNumber, method))
End Sub
Public Sub New(callerInfo As CallerInfo)
'Do something with it...
Me.CallerInfo = callerInfo
End Sub
End Class
以及您作为普通类实现的 CallerInfo :
Public Class CallerInfo
Public Sub New(path As String, lineNumber As Int32, method As String)
Me.Path = path
Me.LineNumber = lineNumber
Me.Method = method
End Sub
Public ReadOnly Property Path As String
Public ReadOnly Property LineNumber As Int32
Public ReadOnly Property Method As String
End Class
的用法Foo
很简单,如下所示:
Dim myFoo As New Foo()
推荐阅读
- algorithm - 查找重复字节序列的算法
- hive - 将数据提取到管道分隔文件的 Talend 作业
- android - Admob:广告显示在我的旧应用中,但不在我的新应用中
- connectycube - 阻塞端口上的 Connectycube websocket 连接
- javascript - JavaScript WEB API MutationObserver URL 更改
- java - 像 facebook messenger 这样的聊天头,带有编辑文本,但编辑文本不显示键盘
- python - 如何从给定列表中找到最接近 CSV 列中的值的匹配项并将结果添加到下一列?
- mediawiki - 是否可以从 Wiki 元历史转储 xml 中提取文章文本?
- react-native - 当我尝试运行我的 expo 应用程序时,为什么我的 android 模拟器给我一个错误?
- javascript - 如何在反应最终形式中更改复选框的格式