0

出荷された (内部的に、まだ出荷されている) ライブラリがあり、ライブラリ内のパブリック クラスの名前を変更したいと考えています。

私が望むのは、それを確認する方法です

  • クライアントコードは動作し続けます
  • クラス名を使用すると、コンパイル時にクライアント コードに非推奨の警告が表示される

  • 上記のプロパティを示す何らかの方法でクラスをエイリアスする方法はありますか?

  • 将来この問題を回避する方法はありますか (クラスの名前とスペルが適切であることを確認する以外に?) パブリック コンストラクターを維持したいので、インターフェイスを操作してもすべての問題が解決されないことに注意してください。
4

1 に答える 1

3

クラスに任意のパブリック エイリアス名を指定できますが、すべてのパブリック プロパティ、メソッドなどを名前を変更したクラスのプライベート インスタンスに転送し、廃止された属性でクラスをデコレートできます。

[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...");
    }
}

古いクラスの公開側の規模によっては、この作業は非常に面倒な場合がありますが、他にできることはありません。

于 2013-03-22T10:25:03.757 に答える