假设我有以下具有泛型接口的类:
public class MyClass_1 : IGenericInterface
{
public void foo()
{
bar();
}
void bar()
{
...
}
}
public class MyClass_2 : IGenericInterface
{
public void foo()
{
bar();
}
void bar()
{
...
}
}
public interface IGenericInterface
{
void foo();
}
它们都具有公共的"foo“功能,其实现也是一样的。所以我倾向于把"foo“变成一个抽象的词,不是吗?
现在,问题是,他们调用了一个私有函数("bar"),它是一个类特定的实现。如何使这个函数"bar“对"foo”的可能的泛型实现来说是可见的?
例如。
public abstract class MyGenericClass: IGenericInterface
{
public foo()
{
bar();
}
}
因此,目标是特定的类继承自泛型类:
public class MyClass_1 : GenericClass
{
private void bar()
{
...
}
}
public class MyClass_2 : GenericClass
{
private void bar
{
...
}
}
发布于 2021-03-25 02:03:16
将bar
定义为抽象的:
public abstract class MyGenericClass: IGenericInterface
{
protected abstract void bar();
public foo()
{
bar();
}
}
然后可以在每个子类中以不同的方式实现bar
,但是基类可以确保它的存在:
public class MyClass_1 : GenericClass
{
protected override void bar
{
// ...
}
}
发布于 2021-03-25 02:02:58
使其成为基类中的抽象受保护方法:
public abstract class MyGenericClass: IGenericInterface
{
public foo()
{
bar();
}
protected abstract void bar();
}
受保护意味着它在所有派生类中都是可见的,抽象意味着您的派生类必须实现它(如果它们本身不是抽象的)。
https://stackoverflow.com/questions/66797064
复制相似问题