当前位置:  开发笔记 > 编程语言 > 正文

如何在其实例中的类中定义方法?

如何解决《如何在其实例中的类中定义方法?》经验,为你挑选了2个好方法。

这可能很容易,但我很难过.我想创建一个通用类,它将在我的程序中多次使用.我希望它非常轻巧,超级快.

对于C#中一个非常简单的例子:

public class SystemTest
{ 
   public TestMethod(string testString)
   {
      if(testString == "blue")
      {
         RunA();
      }
      else if(testString == "red")
      {
         RunB();
      }
      else if(testString == "orange")
      {
         RunA();
      }
      else if(testString == "pink")
      {
         RunB();
      }
   }

   protected void RunA() {}
   protected void RunB() {}       
}

我希望RunA()和RunB()由实例化此类的对象定义和控制.完全由对象实例化SystemTest类来决定RunA()和RunB()将要做什么.你怎么做到这一点?

我不希望实例对象总是继承这个SystemTest类,我希望它能够快速运行.我唯一想到的是复杂的,处理器密集型的东西.我知道有一种更简单的方法可以做到这一点.


编辑:通常,哪个运行得更快,代理或接口方法在下面的答案?



1> eglasius..:

您可以:

public class SystemTest
{ 
   Action RunA;
   Action RunB;
   public SystemTest(Action a, Action b)
   {
      RunA = a;
      RunB = b;
   }
   //rest of the class
}



2> Marc Gravell..:

听起来你想要一个界面,比如:

interface ITestable {
    void RunA();
    void RunB();
}

然后你把它传递给(或者转到SystemTestctor,或者TestMethod).调用类可以(例如)实现ITestable并调用TestMethod(this,someString).

或者,也许是一种扩展方法?顺便说一句,stringarg可能是一个枚举?

public interface ITestable {
    void RunA();
    void RunB();
}
public static class SystemTest
{ 
   public static void TestMethod(this ITestable item, string testString)
   {
      if(testString == "blue")
      {
         item.RunA();
      }
      else if(testString == "red")
      {
          item.RunB();
      }
      else if(testString == "orange")
      {
          item.RunA();
      }
      else if(testString == "pink")
      {
          item.RunB();
      }
   }
}

然后调用者只需实现ITestable,任何人都可以调用foo.SomeMethod(color);实例foo.

推荐阅读
围脖上的博博_771
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有