读取方法的属性值
我需要能够从我的方法中读取属性的值,我该怎么做?
[MyAttribute("Hello World")]
public void MyMethod()
{
// Need to read the MyAttribute attribute and get its value
}
I need to be able to read the value of my attribute from within my Method, how can I do that?
[MyAttribute("Hello World")]
public void MyMethod()
{
// Need to read the MyAttribute attribute and get its value
}
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(6)
您需要调用
GetCustomAttributes
函数一个MethodBase
对象。获取 MethodBase 对象的最简单方法是调用
MethodBase.GetCurrentMethod
。 (注意,你应该添加[MethodImpl(MethodImplOptions.NoInlined)]
)例如:
你也可以手动获取
MethodBase
,如下所示:(这样会更快)You need to call the
GetCustomAttributes
function on aMethodBase
object.The simplest way to get the
MethodBase
object is to callMethodBase.GetCurrentMethod
. (Note that you should add[MethodImpl(MethodImplOptions.NoInlining)]
)For example:
You can also get the
MethodBase
manually, like this: (This will be faster)可用的答案大多已经过时。
这是当前的最佳实践:
这不需要转换并且使用起来非常安全。
您还可以使用
.GetCustomAttributes
获取一种类型的所有属性。The available answers are mostly outdated.
This is the current best practice:
This requires no casting and is pretty safe to use.
You can also use
.GetCustomAttributes<T>
to get all attributes of one type.如果您在构造时将默认属性值存储到属性(在我的示例中为
Name
),那么您可以使用静态属性辅助方法:用法:
我的解决方案基于设置默认值属性构造,如下所示:
If you store the default attribute value into a property (
Name
in my example) on construction, then you can use a static Attribute helper method:Usage:
My solution is based on that the default value is set upon the attribute construction, like this:
如果您正在实现像上面提到的 @Mikael Engver 这样的设置,并允许多次使用。您可以执行以下操作来获取所有属性值的列表。
In case you are implementing the setup like @Mikael Engver mentioned above, and allow multiple usage. Here is what you can do to get the list of all the attribute values.
我使用了这个方法:
然后可以这样使用:
I used this method :
Then can use like this: