想象你有以下接口:如何將接口轉換爲其子接口?
public interface IInterfaceA : IInterfaceX
{
//
// declarations
//
}
public interface IInterfaceB : IInterfaceX
{
//
// declarations
//
}
public interface IInterfaceC : IInterfaceX
{
//
// declarations
//
}
現在我想,以取代執行幾乎同樣的具有單一功能的以下三種方法:
class SomeClass
{
IInterfaceA myVarA;
IInterfaceB myVarB;
IInterfaceC myVarC;
void SomeMethodA(IInterfaceX someVarX)
{
myVarA = (IInterfaceA)someVarX;
}
void SomeMethodB(IInterfaceX someVarX)
{
myVarB = (IInterfaceB)someVarX;
}
void SomeMethodC(IInterfaceX someVarX)
{
myVarC = (IInterfaceC)someVarX;
}
}
我想過是這樣的:
void SomeMethod(IInterfaceX targetVar, IInterfaceX someVarX)
{
//
// here's my problem
//
targetVar = (CastIDontKnowHowToPerform)someVarX;
}
這是使用某物。像
SomeMethod(myVarA, someVarX);
SomeMethod(myVarB, someVarX);
SomeMethod(myVarC, someVarX);
所以我的問題是:
是否有可能是我想?
如何執行此演員我不知道如何執行?
也許一個設計模式是比較合適的
我只是在尋找由一個單一的一個替換它們重構,這三項功能的最佳途徑。
事情我試過到目前爲止: 我用過的東西像object.GetType()和object.GetType()GetInterfaces(),這能很好地得到對象的類型或它的接口(S)。但沒有到將設置爲其接口的對象的類型。
希望你能幫助我...
問候,
的Inno
[編輯] 啊,該死的......點擊 「問你的問題」,並有後簡單的看一下它,這似乎是一個通用函數(或C++中的模板 - 術語)的典型情況。 [/編輯]
C++模板允許多於C#泛型,它們不是等價的。 – workmad3 2009-06-05 09:53:51
不,它們不是等效的,但是在C++中,你會使用一個模板來實現這一點。 – Inno 2009-06-05 11:02:15