Я работаю над .NET 2.0. К сожалению, я не смог использовать более новую версию. Я пытаюсь написать свой собственный атрибут, предоставляющий простое значение.
[AttributeUsage(AttributeTargets.All)]
public class testAttribute : Attribute
{
int b;
public testAttribute(int a)
{
b = a;
Console.WriteLine("Creating Attribute");
}
public testAttribute()
{
b = 5;
Console.WriteLine("Creating Attribute");
}
}
public class MyTestClass
{
[testAttribute]
public MyTestClass()
{
int a = 0;
Console.WriteLine("creating serializer 2");
}
[testAttribute(2)]
public void foo(){
//Type t = this.GetType();
//testAttribute[] t2 = (testAttribute[])t.GetCustomAttributes(typeof(testAttribute), true);
Console.WriteLine("calling foo");
object[] attr = typeof(MyTestClass).GetCustomAttributes(true);
int a = 5;
}
}
Но, похоже, это не работает. Я понял этот пример из msdn [http: //msdn.microsoft.com/en-us/library/a4a92379%28v=vs.80%29.aspx], и для меня это выглядит очень похоже.
Я также обнаружил следующее: Атрибут метода не работает, но это не совсем мой проблема я думаю. Как видите, я испробовал рекомендацию BrokenGlass, но у меня есть массив с размером 0, что означает отсутствие атрибута.
Какие-либо предложения? С уважением Чомп
1 ответ
Вы должны вызывать GetCustomAttributes
для методов, а не для типа.
object[] attr = typeof(MyTestClass).GetMethod("foo").GetCustomAttributes(true);
GetConstructor()
для первого. Также имена методов чувствительны к регистру.
Похожие вопросы
Связанные вопросы
Новые вопросы
c#
C# (произносится как «see Sharp») — это высокоуровневый мультипарадигменный язык программирования со статической типизацией, разработанный Microsoft. Код C# обычно нацелен на семейство инструментов и сред выполнения Microsoft .NET, которое включает в себя .NET, .NET Framework, .NET MAUI и Xamarin среди прочих. Используйте этот тег для ответов на вопросы о коде, написанном на C#, или о формальной спецификации C#.