小编Jon*_*rup的帖子

将方法提取到通用基类中是一项重大更改

我有一个当前结构为这样的库:

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()intT。更改成员的返回类型被列为重大更改。但是既然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)

c# api-design

2
推荐指数
1
解决办法
360
查看次数

标签 统计

api-design ×1

c# ×1