В C# (as of 4.0)
нет такой функции, которая позволяла бы ограничивать использование attribute
в зависимости от доступности участника.
Вопрос будет в том, почему вы хотите это сделать?
Поскольку указан атрибут ниже,
[AttributeUsage(AttributeTargets.Method, Inherited = false, AllowMultiple = true)]
sealed class MethodTestAttribute : Attribute
{
public MethodTestAttribute()
{ }
}
и ниже класса,
public class MyClass
{
[MethodTest]
private void PrivateMethod()
{ }
[MethodTest]
protected void ProtectedMethod()
{ }
[MethodTest]
public void PublicMethod()
{ }
}
Вы можете легко получить атрибуты приватных методов, используя следующий код:
var attributes = typeof(MyClass).GetMethods().
Where(m => m.IsPrivate).
SelectMany(m => m.GetCustomAttributes(typeof(MethodTestAttribute), false));