【发布时间】:2011-09-24 09:46:19
【问题描述】:
假设我需要inherit from two classes in C#。这是不允许的,因此我可以执行以下操作:从其中一个类继承并将另一个类作为成员变量包含在内,从其接口继承并通过将这些接口的所有方法重定向到该成员变量来重新实现这些方法:
interface SecondBaseInterface {
void FirstMethod();
void SecondMethod();
};
class MyClass : FirstBaseClass, SecondBaseInterface {
public void FirstMethod()
{
secondBase.FirstMethod();
}
public void SecondMethod()
{
secondBase.SecondMethod();
}
SecondBaseClass secondBase = new SecondBaseClass();
};
现在这可行,但如果 SecondBaseInterface 中有很多方法,则需要输入大量实际上没有任何用处的代码,并且我必须维护该代码以防 SecondBaseInterface 发生变化。
是否有一些 C# 功能会告诉编译器“对于 SecondBaseInterface 的所有方法,请调用此成员变量的相应方法”或其他方便的方式来进行如此大规模的重定向?
【问题讨论】:
-
附带说明,Resharper 具有生成此类方法的功能。可以让你免于大量输入,但不会从杂乱的代码中拯救。 生成->委派成员
-
正则表达式、控制台、复制、粘贴?哦等等你想要方便:)
标签: c# .net inheritance multiple-inheritance