class A : N
{
void sinefunc()
{
//some stuff here
}
}
class B : N
{
void sinefunc()
{
//some stuff here
}
}
class C : N
{
void sinefunc()
{
//some stuff here
}
}
sinefunc()
是一项常见功能。但是,A,B和C类存在不同
解决方案下的项目。这些类已经继承了一个公共类N,现在,
sinefunc()
可以移到这些类之外。sinefunc()
在N级。它已经写好了,我不想打扰那个班级。答案 0 :(得分:4)
(请注意,我不想将sinefunc()放在N类中 已经写好了,我不想打扰那个班级)
如果不将该功能移至N
课程,则无法执行此操作。您可以拥有一个具有方法签名的接口,但是您必须在每个类中定义实现。
一种方法是将扩展方法写入类N
,然后在继承的类中使用它。
编辑:
定义一个静态类来保存扩展方法,如:
public static class ExtensionClass
{
public static void sinefunc(this N obj)
{
// your code
}
}
稍后您可以将其称为:
static void Main(string[] args)
{
A objA = new A();
objA.sinefunc();
}
请记住包含持有扩展方法的命名空间,否则它将不可见。您可以在以下位置阅读更多内容:Extension methods MSDN
答案 1 :(得分:2)
您可以创建一个中间类,作为类N
的外观:
class A : X { }
class B : X { }
class C : X { }
class X : N
{
protected void sinefunc()
{
//some stuff here
}
}
答案 2 :(得分:0)
如果sinefunc()是一个常用函数,为什么不把它放到另一个类中。例如,您可以在Utility类
中将其设置为静态方法