J'ai un modèle de vue qui utilise des attributs personnalisés tels que
public int Id { get; set; }
public string Name { get; set; }
[IsEnumeration(typeof(CaseStatus))]
public string Status { get; set; }
IsEnumeration est un attribut personnalisé qui prend en paramètre une superclasse Enumeration (en fait, il prend n'importe quel type, mais cela n'a pas d'importance puisque personne d'autre ne l'utilisera).
public class IsEnumerationAttribute : Attribute
{
public Type Enumeration;
public IsEnumerationAttribute(Type enumeration)
{
Enumeration = enumeration;
}
}
Ce que je veux, c'est pouvoir obtenir le type spécifié pour n'importe quel paramètre. Actuellement, mon code ressemble à ceci :
public T EnumerationValuesToDisplayNames<T>(T item) where T : new()
{
if (LoggedInUser.IsSuper) return item;
var tProps = typeof (T).GetProperties()
.Where(prop => Attribute
.IsDefined(prop, typeof (IsEnumerationAttribute)));
foreach (var prop in tProps)
{
if (prop.GetValue(item, null) != null)
{
/*
Here I look through all properties with the IsEnumerable attribute.
I want to do something such as:
var type = prop.GetAttribute(item, typeof(IsEnumerable));
var displayName = Enumeration<type>.FromId(prop.GetValue(item, null));
prop.SetValue(item, displayName);
*/
}
}
return item;
}
J'espère que cela a du sens, toute aide serait grandement appréciée, merci.