Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Name of a property as input to attribute constructor

I have a custom attribute and I would like it to have the name of a property as input. Because the name is a string it is a valid input type (as attributes are quite limited as to what they can have as input to their constructors). But how can I accomplish this?

Take this example code:

public class MyCustomAttribute : Attribute {
    public MyCustomAttribute(string propertyName) {}
}

public class Foo {
    public bool MyCustomProperty { get; set; }

    [MyCustom(SomeMagicAppliedToMyCustomProperty)] // I want the attribute to receive something along the lines of "Foo.MyCustomProperty"
    public void Bar();
}

How can I accomplish this with the limitations to what an attribute can receive in its constructor?

like image 266
GTHvidsten Avatar asked Jan 23 '26 22:01

GTHvidsten


1 Answers

There's a new feature in c#-6.0 nameof() that gives the name of the particular property, variable, class etc as a string,

http://www.c-sharpcorner.com/UploadFile/7ca517/the-new-feature-of-C-Sharp-6-0-nameof-operator/ https://msdn.microsoft.com/en-us/magazine/dn802602.aspx

like image 136
samee Avatar answered Jan 26 '26 11:01

samee