次のように、少なくともクラスの1つへの依存性注入を許可しない限り、提案したことを実行することはできません。
public class One
{
private readonly Another another;
public One(Another another)
{
this.another = another;
}
}
public class Another
{
private readonly One one;
public Another(One one)
{
this.one = one;
}
public Another() {}
public setOne(One one)
{
this.one = one;
}
}
次に、Oneオブジェクトを1回だけ設定できるように、Another.setOne()に何らかの保護ロジック(例外?)を配置することを検討する必要がある場合があります。
Another
また、変数を初期化せずにデフォルトコンストラクターを使用してインスタンス化する際に問題が発生する可能性があることも考慮してください。one
その場合、読み取り専用属性を削除し、setOne()で前述のロジックを使用する必要があります。
また
One
クラスを作成し、内部でAnother
への参照を使用してクラスを作成させることができますOne
。これにより、2つの間の結合が増える可能性がありますが、次のように必要なことを実行します。
public class One
{
private readonly Another another;
public One()
{
this.another = new Another(this);
}
public Another getAnother()
{
return this.another;
}
}
public class Another
{
private readonly One one;
public Another(One one)
{
this.one = one;
}
public Another() {}
}
...
One one = new One();
Another another = one.getAnother();