2

以下是班级列表。这些类有一个共同的方法,其目标在类中是相同的。我想通过将此方法移动到第四类来删除 CommonMethod() 的重复,并从剩余的其他类中调用它

    Class First
{
    string ClassField
    method FirstClassMethodOne()
    {
      CommonMethod()
    }

    method CommonMethod()
    {
        classField = 1  
    }

}


Class Second
{
    method SecondClassMethodOne()
    {
      CommonMethod()
    }

    method CommonMethod()
    {

        Fifth.classField = 1        
    }

}


Class Third
{
    method ThirdClassMethodOne()
    {
      CommonMethod()
    }

    method CommonMethod(string a, string b)
    {
        stirng ClassField
        classField = 1      
    }

}


Class Fourth
{
    string FourtClassField
    method FourtClassMethodOne()
    {

    }

}
4

5 回答 5

3

您可以将该方法移动到一个新类,并使 3 个旧类从该新类继承。

class BaseClass
{
   public void YourMethod()
   {
     // ...
   }
}

class FirstClass : BaseClass
{

}
于 2013-06-24T14:02:34.883 回答
1

您可以使用其中的方法创建一个静态类。如果需要,该方法可以接受一些参数来区分类。

于 2013-06-24T14:02:36.647 回答
1

您可以将方法移入Fourth并通过以下方式调用它:

  public class Fourth() {
         public void Method() {

         }
  }

  var fourth = new Fourth();
  fourth.Method();

或者您可以创建一个基/抽象类并从中继承。

 public class Base {
      public void CommonMethod() { }
 }

 public class First : Base
 {

 }

 public class Second : Base
 {

 }

 var first = new First();
 first.CommonMethod();

 var second = new Second();
 second.CommonMethod();
于 2013-06-24T14:03:13.833 回答
0

创建一个新类并添加CommonMethod()到该类。看起来您有 的重载版本,CommonMethod()因此您需要在每个重载方法中考虑不同的参数。您将需要一个类的实例或一个静态类来从每个单独的类调用您的方法。

于 2013-06-24T14:02:19.860 回答
0

如果您的类都继承公共基类 ClassBase,那么将方法留在 ClassBase 中是合适的。

class ClassBase
{
    public static string ClassField;

    public virtual void MethodOne()
    {
        CommonMethod();
    }

    public virtual void CommonMethod()
    {
        ClassField = "1";
    }
}

class ClassOne : ClassBase
{
}

class ClassTwo : ClassBase
{
    public void CommonMethod(string a, string b)
    {
        string localVariable;
        base.CommonMethod();
    }
}
于 2013-06-24T14:10:59.260 回答