0
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 现在,

  1. 为了避免代码重复,sinefunc()可以将它们移到这些类之外。
  2. 但是,由于不允许多重继承。使功能通用的有效方法或可行方法是什么?(请注意,我不想把它放在sinefunc() N 班。它已经写好了,我不想打扰那个班。
4

3 回答 3

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();
}

请记住包含包含扩展方法的命名空间,否则它将不可见。 您可以在以下位置阅读更多信息:扩展方法 MSDN

于 2013-01-02T06:30:57.300 回答
2

您可以创建一个中间类作为类的外观N

class A : X {    }

class B : X {    }

class C : X {    }

class X : N
{
     protected void sinefunc()
     {
           //some stuff here
     }
}
于 2013-01-02T06:33:33.100 回答
0

如果 sinefunc() 是一个通用函数,为什么不把它放到另一个类中。例如,您可以在 Utility 类中将其设为静态方法

于 2013-01-02T06:33:09.873 回答