C#类之间的双向连接

时间:2017-04-30 15:18:41

标签: c#

我目前正致力于项目(为了好玩),涉及模拟逻辑门。我有一个Connection.cs和一个Gate.cs,它是其他类的父类,比如Not,And,Or等。在我的Gate类中,我有一个抽象方法,它将最终完成输入和设置输出的工作。

public abstract class Gate : IConnectable {

    private int[] inputs;
    private int[] outputs;

    protected Gate(int inputCount, int outputCount) {
        inputs = new int[inputCount];
        outputs = new int[outputCount];
    }

    ...

    public abstract void Evaluate();
}

public class Connection {

    private IConnectable input;
    private IConnectable output;

    public Connection(IConnectable from, IConnectable to) {
        input = from;
        output = to;
    }

}

最后,我试图找出一种简洁的方法,让Gate对象包含对其输入/输出连接的引用,并让连接知道" wire&#两端的内容是什么34 ;.有一个简单的方法吗?

2 个答案:

答案 0 :(得分:0)

通常,您需要某种方式来表示图形。有很多方法可以做到这一点。

我认为这样的设计是一个起点:

interface IGate
{
  bool Value { get; }
}

class And : IGate
{
  public IGate X { get; private set; }

  public IGate Y { get; private set; }

  public bool Value
  {
    get
    {
      return X.Value && Y.Value;
    }
  }

  public And(IGate x, IGate y)
  {
    X = x;
    Y = y;
  }

}

class Input : IGate
{
  public bool Value { get; set; }

  public Input(bool value)
  {
    Value = value;
  }

}

一个例子是:

new And(new Input(true), new And(new Input(true), new Input(false))).Value

答案 1 :(得分:0)

我通常做这样的事情

 public function addComment($id,$body,$solved)
{    

    $this->find($id)->status = 2;
    $this->save();            


    $this->comments()->create([
        'ticket_id' => $id,
        'body' => $body,
        'user_id' => auth()->id()
        ]);
}