我有一个当前结构为这样的库:
class Base<T>
{
}
class Derived : Base<int>
{
public int Foo();
}
class AnotherDerived : Base<string>
{
}
Run Code Online (Sandbox Code Playgroud)
我想类似的添加Foo(),以AnotherDerived和为实现将是相同的两个,我想拉起Foo()到他们共享的父类Base像下面。
class Base<T>
{
public T Foo();
}
class Derived : Base<int>
{
}
class AnotherDerived : Base<string>
{
}
Run Code Online (Sandbox Code Playgroud)
否则会改变返回类型Foo()从int到T。更改成员的返回类型被列为重大更改。但是既然Derived是泛型的Base<T>,T=int代码还是可以编译的,至少对于这个例子是这样。
int foo = myDerived.Foo();
Run Code Online (Sandbox Code Playgroud)
我不想向我的用户介绍重大更改,所以我的问题是这种拉起是否以任何方式被视为重大更改?进入基地本身不应该是一个突破性的变化
将方法移到其被移除类型的层次结构树中更高的类上
启用代码共享并且不应该是破坏性更改的替代实现,但如果上拉是非破坏性的,我想避免这种实现,可能是:
class Base<T>
{
protected T Foo();
}
class Derived …Run Code Online (Sandbox Code Playgroud)