我有一个已发货的库(在内部,但仍在发货),我想重命名库中的公共类。
我想要的是一种方法来确保
- 客户端代码继续工作
客户端代码在使用类名的编译时收到弃用警告
有没有办法以某种方式给类起别名,这会表现出上述属性?
- 将来有什么方法可以避免这个问题(除了确保类的命名和拼写正确?)请注意,我想保留一个公共构造函数,因此使用接口不会解决我的所有问题。
我有一个已发货的库(在内部,但仍在发货),我想重命名库中的公共类。
我想要的是一种方法来确保
客户端代码在使用类名的编译时收到弃用警告
有没有办法以某种方式给类起别名,这会表现出上述属性?
您可以为该类提供任何公共别名,但您可以将所有公共属性、方法等转发给重命名类的私有实例,并使用过时属性装饰该类:
[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...");
}
}
根据旧班级公共方面的规模,这项工作可能非常乏味,但您无能为力。