我正在重构一个旧库,其中包含以下类:
public class Template //Old one
{
public double Value { get; set; }
}
现在最好提供更多的灵活性以允许用户定义Value类型。所以我改成Template了泛型类:
public class Template<T>
{
public T Value { get; set; }
}
此更改打破了旧Template类的用法,因此我尝试添加向后兼容性(允许其他人以旧方式使用我的库):
public class Template: Template<double> { }
但它也需要在库中进行大量更改。特别是在使用旧的地方Template,例如:
public class AnotherClassInLibrary<T>
{
public Template<T> API() {...}
}
public class AnotherClassInLibrary : AnotherClassInLibrary<double>
{
// This class is also defined for the old way of using the library
public Template API()
{
return base.API();
// Error here: Template<double> cannot be implicitly convert to Template.
}
}
所以问题来了: newTemplate是从 继承的Template<double>,所以在这里转换不是一个好的/工作实践。有没有办法在AnotherClassInLibrary不重写API()代码两次的情况下保持向后兼容?
PS 我真的希望 C# 有类似typedefC++ 的东西。但答案是否定的。
慕丝7291255
相关分类