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 回答