重命名已发布库中的公共类

时间:2013-03-22 10:08:38

标签: c# dll deprecated backwards-compatibility

我有一个已经发货的库(内部,但仍然发货),我想重命名库中的公共类。

我想要的是一种确保

的方法
  • 客户端代码继续运行
  • 客户端代码在使用类名时编译时会收到弃用警告

  • 有没有办法以某种方式对该类进行别名,这将展示上述属性?

  • 有没有办法在将来避免这个问题(除了确保类被命名和拼写正确?)请注意,我想保留一个公共构造函数,因此使用接口将无法解决我的所有问题。 / LI>

1 个答案:

答案 0 :(得分: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...");
    }
}

根据您老班级公共方面的规模,这项工作可能非常繁琐,但您无能为力。