Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Access to the value of a Custom Attribute

Tags:

c#

attributes

I've got this custom attribute:

[AttributeUsage(AttributeTargets.Method, AllowMultiple=false, Inherited = true)] class MethodTestingAttibute : Attribute {        public string Value{ get; private set; }     public MethodTestingAttibute (string value)     {         this.Value= value;      } } 

To be used like this:

[MethodTestingAttibute("2")] public int m1() {return 3; } 

And my difficulty is to take the value of "2" of MethodTestingAttibute

object result = method.Invoke(obj, new Type[] {}); // here i get the return 

Now I want to compare this result to the value of MethodTestingAttibute. How can I do that? I'm trying to go up to this road but without success:

method.GetCustomAttributes(typeof(MethodTestAttibute), true)[0]... 

What is the proper way to get access to the field of the custom attribute?

like image 235
RCPT Avatar asked Jun 30 '11 17:06

RCPT


People also ask

How do I get custom attribute values?

Retrieving a custom attribute is a simple process. First, declare an instance of the attribute you want to retrieve. Then, use the Attribute. GetCustomAttribute method to initialize the new attribute to the value of the attribute you want to retrieve.

How do you access data value in React?

Use the target. dataset property to access data attributes from the event object in React. The dataset property provides read and write access to the custom data attributes of the element. The property returns a Map of strings which can be converted to an object.

What's a custom attribute?

Custom attributes. A custom attribute is a property that you can define to describe assets. Custom attributes extend the meaning of an asset beyond what you can define with the standard attributes. You can create a custom attribute and assign to it a value that is an integer, a range of integers, or a string.


2 Answers

var attribute =    (MethodTestingAttibute)    typeof (Vehicles)       .GetMethod("m1")       .GetCustomAttributes(typeof (MethodTestingAttibute), false).First(); Console.WriteLine(attribute.Value); 
like image 168
agent-j Avatar answered Oct 05 '22 23:10

agent-j


With my custom attribute:

[AttributeUsage(AttributeTargets.Method)] public class AttributeCustom : Attribute {     public string MyPropertyAttribute { get; private set; }      public AttributeCustom(string myproperty)     {         this.MyPropertyAttribute = myproperty;     } } 

I create a method for to get attribute with his values:

public static AttributeCustom GetAttributeCustom<T>(string method) where T : class {     try     {         return ((AttributeCustom)typeof(T).GetMethod(method).GetCustomAttributes(typeof(AttributeCustom), false).FirstOrDefault());     }     catch(SystemException)     {         return null;     } } 

With a example class (must be not static because T is generic)

public class MyClass {     [AttributeCustom("value test attribute")])     public void MyMethod()      {         //...     } } 

Usage:

var customAttribute = GetAttributeCustom<MyClass>("MyMethod"); if (customAttribute != null) {     Console.WriteLine(customAttribute.MyPropertyAttribute); } 
like image 40
Joaquinglezsantos Avatar answered Oct 06 '22 01:10

Joaquinglezsantos