Peut-être que je reçois le concept de Attributs personnalisés mal, mais je pensais que cela devrait être quelque chose qui serait possible:Mettre en oeuvre la propriété avec attribut personnalisé
Je vais avoir une classe avec une propriété de chaîne. Je dispose de plusieurs classes dérivées avec des propriétés qui essentiellement obtenir une sous-chaîne de la propriété BaseClass
class BaseClass {
public string MyString { get; set;}
}
class FooClass : BaseClass {
public string Part1 { get { return MyString.SubString(0,3); }}
public string Part2 { get { return MyString.SubString(3,5); }}
}
class BarClass : BaseClass {
public string PartA { get { return MyString.SubString(0,4); }}
public string PartB { get { return MyString.SubString(4,1); }}
}
Ils ont aussi un setters, et le code réel est plus complexe un peu ... Mais vous avez obtenu l'image. Je voudrais ne pas avoir à implémenter cela un millier de fois, donc je pensais utiliser un attribut personnalisé. Alors que je pouvais faire:
class FooClass : BaseClass {
[DataPart(0, Length = 3)]
public string Part1 { get; set; }
[DataPart(3, Length = 5)]
public string Part2 { get; set; }
}
class BarClass : BaseClass {
[DataPart(4, Length = 4)]
public string PartA { get; set; }
[DataPart(4)]
public string PartB { get; set; }
}
Je l'ai déjà attribut personnalisé pour elle:
[global::System.AttributeUsage(AttributeTargets.Property, AllowMultiple = false)]
sealed class DataPartAttribute : Attribute
{
public ushort Position { get; private set; }
public ushort Length { get; set; }
public DataByteAttribute(ushort position)
{
Position = position;
}
}
Et maintenant?