Vielleicht Attribute falsch, ich bin das Konzept der Gewohnheit bekommen, aber ich dachte, das sollte etwas sein, das möglich wäre:Implementieren Eigenschaft mit benutzerdefinierten Attribut
Ich bin eine Klasse mit einem String-Eigenschaft. Ich habe mehrere abgeleitete Klassen mit Eigenschaften, die im Grunde eine Unterkette von der Unterkunft Basisklasse erhalten
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); }}
}
sie auch eine Setter haben, und der eigentliche Code ist ein wenig komplizierter ... Aber Sie haben das Bild.
Ich möchte das nicht tausendmal implementieren müssen, also dachte ich über die Verwendung eines benutzerdefinierten Attributs nach. So konnte ich tun:
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; }
}
ich schon Gewohnheit für sie Attribut haben:
[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;
}
}
Was jetzt?