想象你有以下接口:如何将接口转换为其子接口?
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