我有以下情况
我有一个界面
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);
}
}
还有比我更好的其他解决方案吗?
谢谢!
答案 0 :(得分:3)
首先,您的命名惯例是一团糟。阅读微软所做的guidelines。
根据你的例子,很难说出你想要实现的目标。
回到你的问题:
您应该只访问接口以使用该接口。不要试图用类/接口制作任何神奇的东西来让它们一起工作。这通常意味着该类不应该尝试实现该接口。
最好创建一个具有所需功能的新界面,让你的类实现这两种功能。