抽象类、接口、容器和方法的问题
本文关键字:方法 问题 接口 抽象类 | 更新日期: 2023-09-27 18:07:03
我有以下场景
I've a Interface
public interface ImyInterface
{
void myInterfaceMethod(string param);
}
我有一个抽象类
public abstract class myAbstractClass
{
public myAbstractClass()
{
//something valid for each inherited class
}
public void myAbstractMethod<T>(T param)
{
//something with T param
}
}
我有一个继承自myAbstractClass并实现了ImyInterface的类
public class myClass : myAbstractClass, ImyInterface
{
public myClass():base()
{}
public void ThisMethodWillNeverCall()
{
// nothing to do
}
}
最后,我有一个类,我将在其中创建一个ImyInterface对象。此时我将调用myAbstractMethod,但是…
public class myFinalClass
{
public void myFinalMethod()
{
ImyInterface myObj = _myContainer<ImyInterface>();
myObj.???
}
}
显然没有这个方法,因为它没有声明到接口中。我的解决方案如下
public interface ImyInterface
{
void myInterfaceMethod(string param);
void myFakeMethod<T>(T param);
}
public class myClass : myAbstractClass, ImyInterface
{
public myClass():base()
{}
public void ThisMethodWillNeverCall()
{
// nothing to do
}
//--- a fake method
public void myFakeMethod<T>(T param)
{
base.myAbstractMethod<T>(param);
}
}
有没有比我的更好的解决方案?
谢谢!
首先,您的命名约定很混乱。仔细阅读微软制定的指导方针。
也很难根据你的例子来判断你想要达到什么目标。
回到你的问题:
你应该只访问一个接口来使用它。不要试图用类/接口做任何神奇的东西来让它们一起工作。这通常意味着类不应该尝试实现接口。
最好创建一个新的接口,它具有你想要的特性,并让你的类实现这两个。