gpt4 book ai didi

c# - 自定义属性 - 仅为私有(private)成员设置属性用法

转载 作者:行者123 更新时间:2023-11-30 12:16:53 25 4
gpt4 key购买 nike

我创建了一个自定义属性,我想设置AttributeUsage(或者可能是属性类中的其他属性),这样我的属性只能在私有(private)方法中使用,这可能吗?

预先感谢您的回答!

最佳答案

C#(自 4.0 起) 中没有这样的功能,可让您根据成员的可访问性限制 attribute 的使用。

问题是您为什么要这样做?

因为下面给出了属性,

[AttributeUsage(AttributeTargets.Method, Inherited = false, AllowMultiple = true)]
sealed class MethodTestAttribute : Attribute
{
public MethodTestAttribute()
{ }
}

及以下类(class),

public class MyClass
{
[MethodTest]
private void PrivateMethod()
{ }

[MethodTest]
protected void ProtectedMethod()
{ }

[MethodTest]
public void PublicMethod()
{ }
}

您可以使用以下代码轻松获取私有(private)方法的属性:

var attributes = typeof(MyClass).GetMethods().
Where(m => m.IsPrivate).
SelectMany(m => m.GetCustomAttributes(typeof(MethodTestAttribute), false));

关于c# - 自定义属性 - 仅为私有(private)成员设置属性用法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4501463/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com