クラスに任意のパブリック エイリアス名を指定できますが、すべてのパブリック プロパティ、メソッドなどを名前を変更したクラスのプライベート インスタンスに転送し、廃止された属性でクラスをデコレートできます。
[Obsolete("Please use LatestGreatest instead.")]
public class OldSchool
{
private LatestGreatest _Target;
public OldSchool()
{
_Target = new LatestGreatest();
}
public void DoSomething()
{
_Target.DoSomething();
}
[Obsolete("Please use LatestGreatest.DoItInSomeOtherWay()")]
public void DoTheOldWay()
{
_Target.DoItInSomeOtherWay();
}
}
public class LatestGreatest
{
public void DoSomething()
{
Console.WriteLine("I'm so fresh and cool.");
}
public void DoItInSomeOtherWay()
{
Console.WriteLine("Let's do it...");
}
}
古いクラスの公開側の規模によっては、この作業は非常に面倒な場合がありますが、他にできることはありません。