Я не видел такого атрибута, но, думаю, это возможно. Эта статья в MSDN описывает управление версиями с использованием ключевых слов overrides
и new
.
Короче говоря, C # оснащен языковыми функциями, которые позволяют производным классам развиваться и сохранять совместимость. В этом примере показано чисто базовое отношение к производному, но на самом деле базовый реализует интерфейс, необходимый для версии. Наличие одного интерфейса требует другого (предыдущая версия) интерфейса в сочетании с этим методом, также весьма полезно.
Пример создания интерфейса, который требует другого:
public interface IMyInterface
{
void FirstMethod();
}
public interface IMySecondInterface : IMyInterface
{
void SecondMethod();
}
Пример использования наследования для поддержания совместимости:
public class MyBase
{
public virtual string Meth1()
{
return "MyBase-Meth1";
}
public virtual string Meth2()
{
return "MyBase-Meth2";
}
public virtual string Meth3()
{
return "MyBase-Meth3";
}
}
class MyDerived : MyBase
{
// Overrides the virtual method Meth1 using the override keyword:
public override string Meth1()
{
return "MyDerived-Meth1";
}
// Explicitly hide the virtual method Meth2 using the new
// keyword:
public new string Meth2()
{
return "MyDerived-Meth2";
}
// Because no keyword is specified in the following declaration
// a warning will be issued to alert the programmer that
// the method hides the inherited member MyBase.Meth3():
public string Meth3()
{
return "MyDerived-Meth3";
}
public static void Main()
{
MyDerived mD = new MyDerived();
MyBase mB = (MyBase) mD;
System.Console.WriteLine(mB.Meth1());
System.Console.WriteLine(mB.Meth2());
System.Console.WriteLine(mB.Meth3());
}
}