我有以下情形問題的抽象類,接口,集裝箱和方法
我有一個接口
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