如何通过对象指针调用C#对象方法/更改字段?

Pau*_*ulG 2 c#

这是一个简单的问题(这里是C#noob),我找不到如何做到这一点(我有Schildt的C#4.0参考,但不确定我在寻找什么).

假设我有两个不同类创建的对象,但是具有相同名称的字段和/或方法.例如:

public class Object1 {
  bool enable;
  public void Reset(){
    enable = false;
  }
}

public class Object2 {
  bool enable;
  public void Reset(){
    enable = false;
  }
}
Run Code Online (Sandbox Code Playgroud)

对象非常不同,证明了创建两个不同对象的合理性.但是,我有许多具有常见'enable'字段和'Reset()'方法的对象.

所以这就是我想要做的事情(伪代码或其他任何东西):

void Manipulate(ref object pObj){
  (pObj).enable = true;
  (pObj).Reset();
}

void Main(){
  Manipulate(obj1);
  Manipulate(obj2);
}
Run Code Online (Sandbox Code Playgroud)

我怎样才能做到这一点?我不知道如何创建一个可以指向来自不同类的对象的对象.

谢谢!


感谢所有的答案.我浏览了接口并将它们理解为"别名",并且无法弄清楚它们的用处是什么.

Dan*_*Tao 5

这是接口的用途:

public interface ICanResetAndEnable
{
    // Note: interfaces cannot have fields, only properties and methods.
    bool Enable { get; set; }
    void Reset();
}

public class Object1 : ICanResetAndEnable {
  bool Enable { get; set; }
  public void Reset(){
    Enable = false;
  }
}

public class Object2 : ICanResetAndEnable {
  bool Enable { get; set; }
  public void Reset(){
    Enable = false;
  }
}
Run Code Online (Sandbox Code Playgroud)

然后定义您的Manipulate方法以接受实现此接口的任何类型的参数:

void Manipulate(ICanResetAndEnable obj)
{
    // Do whatever.
}
Run Code Online (Sandbox Code Playgroud)