Get class property name
.net, reflection
Solution
Here is an example of what I'm talking about:
[AttributeUsage(AttributeTargets.Property)]
class TextProperyAttribute: Attribute
{}
class MyTextBox
{
[TextPropery]
public string Text { get; set;}
public int Foo { get; set;}
public double Bar { get; set;}
}
static string GetTextProperty(Type type)
{
foreach (PropertyInfo info in type.GetProperties())
{
if (info.GetCustomAttributes(typeof(TextProperyAttribute), true).Length > 0)
{
return info.Name;
}
}
return null;
}
...
Type type = typeof (MyTextBox);
string name = GetTextProperty(type);
Console.WriteLine(name); // Prints "Text"
Problem
I have my winform application gathering data using databinding. Everything looks fine except that I have to link the property with the textedit using a string: Me.TextEdit4.DataBindings.Add(New System.Windows.Forms.Binding("EditValue", Me.MyClassBindingSource, "MyClassProperty", True)) This works fine but if I change the class' property name, the compiler obviously will not warn me . I would like to be able to get the property name by reflection but I don't know how to specify the name of the property I want (I only know how to iterate among all the properties of the class) Any idea?