У меня есть свойство в базовом классе, помеченное атрибутами, и я хотел бы изменить некоторые атрибуты в каждом из моих производных классов. Каков наилучший способ сделать это?
Из того, что я могу сказать, я должен определить свойство как абстрактное в моем базовом классе, переопределить свойство в каждом из моего базового класса и переопределить все атрибуты. Это кажется излишним, и я не без ума от этого, потому что мне придется повторять общие атрибуты в каждом производном классе.
Это упрощенный пример того, что я пытаюсь сделать. Я хочу изменить MyAttribute
в производных классах, но сохранить все остальные атрибуты свойства одинаковыми и определенными в одном месте (т.е. я не хочу переопределять XmlElement
более одного раза). Это вообще возможно? Или есть лучший способ сделать это? Или я здесь совершенно неправильно использую атрибуты?
using System;
using System.Xml;
using System.Xml.Serialization;
[AttributeUsage(AttributeTargets.Property, AllowMultiple = false)]
public class MyAttribute : System.Attribute
{
public MyAttribute() {}
public string A { get; set; }
public string B { get; set; }
}
public abstract class BaseClass
{
public BaseClass() {}
[XmlElement("some_property")]
[MyAttribute(A = "Value1", B = "Value2")]
public string SomeProperty { get; set; }
}
public class FirstDerivedClass : BaseClass
{
//I want to change value B to something else
//in the MyAttribute attribute on property SomeProperty
}
public class SecondDerivedClass : BaseClass
{
//I want to change value B to yet another value
//in the MyAttribute attribute on property SomeProperty
}