I have class and properties in there. Some properties can be marked attribute (it's my LocalizedDisplayName
inherits from DisplayNameAttribute
). This is method for get all properties of class:
private void FillAttribute() { Type type = typeof (NormDoc); PropertyInfo[] propertyInfos = type.GetProperties(); foreach (var propertyInfo in propertyInfos) { ... } }
I want to add properties of class in the listbox which marked LocalizedDisplayName
and display value of attribute in the listbox. How can I do this?
EDIT
This is LocalizedDisplayNameAttribute:
public class LocalizedDisplayNameAttribute : DisplayNameAttribute { public LocalizedDisplayNameAttribute(string resourceId) : base(GetMessageFromResource(resourceId)) { } private static string GetMessageFromResource(string resourceId) { var test =Thread.CurrentThread.CurrentCulture; ResourceManager manager = new ResourceManager("EArchive.Data.Resources.DataResource", Assembly.GetExecutingAssembly()); return manager.GetString(resourceId); } }
I want to get string from resource file. Thanks.
It's probably easiest to use IsDefined
:
var properties = type.GetProperties() .Where(prop => prop.IsDefined(typeof(LocalizedDisplayNameAttribute), false));
To get the values themselves, you'd use:
var attributes = (LocalizedDisplayNameAttribute[]) prop.GetCustomAttributes(typeof(LocalizedDisplayNameAttribute), false);
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With