我有以下情形问题的抽象类,接口,集装箱和方法
我有一个接口
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
}
}
我ve一类从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);
}
}
还有没有其他的解决方案比我好?
谢谢!
您为什么认为这是一个问题?如果方法是使用接口的代码所要求的,它应该是接口的一部分。 – Jason
如果你正在使用接口,那么显然这些方法需要在接口上声明。 – dlev
抛弃接口,使用抽象类。 – Will