我正在寻找一种模式来将接口方法聚合成一个通用方法。
最好举例说明我正在做的事情
考虑到我有一个包含40多个方法的接口,这些方法具有不同的职责,但除了函数名称和参数之外,这些方法的实现是相同的。
interface MultiMethod{
public TypeA A (p1,p2);
public TypeA B (p1);
public TypeC C (p5,p3,p2);
.
.
.
}
实施类
class MultiMethodeService : MultiMethod
在MultiMethodeService中我需要实现所有的Interface方法,但方法的实现并没有真正的不同。
像:
public TypeA A (p1,p2){
proxy.call("remoteA").params(p1,p2);
}
public TypeB B (p1){
proxy.call("remoteB").params(p1);
}
我想用一个使用反射的通用方法替换方法的实现。
泛型方法派生
对我而言,很清楚如何实现泛型方法,但是当我有一个泛型方法也具有相同的语义(如没有泛型实现)时,它是如何可能的。更深层次意义代码complition(intellisense)应该适用于泛型实现等于OOP实现。 我之后想要使用MultiMethodService的服务对象,如:
var service = new MultiMethodService()
service.A(p1,p2)
一些天真的想法是实现枚举{“A”,“B”}
service.callGeneric(enum.A, p1,p2);
service.callGeneric(enum.B, p1);
这不是很好。
为什么你要实现这个而不是直接的OOP解决方案?
如果您能提供任何模式或想法,我们非常感谢您的帮助。
offtopic
需要更多解释?假设我在c#中有这个javascript(typescript)interface,它表示c#的typescript服务。另外,我有c# classes反映了javascript类。现在我有一种机制可以从C#调用javascript来计算结果。 see here。这是在接口方法中实现的。这重复了46次,如果有什么变化,我必须重构一些实现。如何通过使用通用的东西来防止重新实现接口方法。有可能使用像service.getSyntacticDiagnostics(...)
这样的服务,我可以用它来改写,代码完成(intellisense)应该与OOP样式代码同等地工作。