別のクラスを使用するクラスがあります。
最初のクラスには次のメソッドがあります。
public void myMethod()
{
//Parameters are an enumeration.
// Really is a exchange variable between this class
//and the other class.
Paramters myParameter = Parameters.Option1;
MyClass2 myOtherClass = new MyClass2(myParameter);
}
2 番目のクラス:
public enum Parameters { Option1, Option2, Option3 }
MyClass2
{
Parameters _myParameters;
Public MyClass2(Parameters paramParameters)
{
_myParameters = paramParameters;
}
private void clickButton()
{
_myParameters = Parameters.Option2;
this.Dispose();
}
}
ダイアログを作成しParameters
、メイン ウィンドウとダイアログ間の交換として機能し、ダイアログでの選択について通知する列挙型です。
ただし、 でclickButton
の値を変更する_myParameters
と、 のコンストラクタでパラメータとして渡されたオブジェクトでは変更されませんMyClass2
。
列挙型を交換変数として使用する代わりに、列挙型を持つクラスを作成すると、選択を取得できます。交換クラスは次のようになります。
class MyExchangeClass
{
Parameters myOption;
}
次に、コードは次のようになります。
public void myMethod()
{
//Parameters are an enumeration.
// Really is a exchange variable between this class
//and the other class.
MyExchangeClass mySelection= new MyExchangeClass();
MyClass2 myOtherClass = new MyClass2(mySelection);
}
2 番目のクラス:
public MyExchangeClass
{
Parameters enum MySelection { Option1, Option2, Option3 }
}
class MyClass2
{
MyExchangeClass _mySelection;
Public MyClass2(MyExchangeClassparamParameters)
{
_mySelection= paramParameters;
}
private void clickButton()
{
_mySelection.MySelection = Parameters.Option2;
this.Dispose();
}
}
このようにしてClass1
、メイン ウィンドウである は、 のプロパティで更新された値を取得しますclass MyExchangeClass
。
最初のソリューションで列挙が更新されない理由を知りたいのですが、可能であれば、列挙をクラスにラップする必要を避けたいからです。