私はOOPを初めて使用しています。静的クラスはわかりません。スタティッククラスC#コンストラクタOOP
私はここで
が私のコード..です静的クラスアクションを作成し、テキストブロックのapperanceを変更するための1つの静的メソッドにしたい:
public static class Tools
{
public enum StatusOption
{
Online,
Offline,
Warning
}
}
public class Actions
{
private SortedDictionary<Tools.StatusOption,SolidColorBrush> StatusColors = new SortedDictionary<Tools.StatusOption,SolidColorBrush>();
public Actions()
{
StatusColors.Add(Tools.StatusOption.Online, new SolidColorBrush(Colors.Green));
StatusColors.Add(Tools.StatusOption.Offline, new SolidColorBrush(Colors.Red));
StatusColors.Add(Tools.StatusOption.Warning, new SolidColorBrush(Colors.Orange));
}
public void SetStatus(Tools.StatusOption _statusOption, TextBlock _txtBlock)
{
_txtBlock.Text = _statusOption.ToString();
_txtBlock.Foreground = StatusColors[_statusOption];
}
}
それは動作しますが、私は私の複数のインスタンスを作成する必要がありますクラス、これは無用です。
private void Close_Click(object sender, RoutedEventArgs e)
{
Actions a1 = new Actions();
a1.SetStatus(Tools.StatusOption.Offline, StatusTextBlock);
}
private void Open_Click(object sender, RoutedEventArgs e)
{
Actions a2 = new Actions();
a2.SetStatus(Tools.StatusOption.Online, StatusTextBlock);
}
私はちょうどこのようにそれを好む:
private void Open_Click(object sender, RoutedEventArgs e)
{
Actions.SetStatus(Tools.StatusOption.Online, StatusTextBlock);
}
私が知っている、私は静的クラスと静的コンストラクタを定義する必要があります。
public static class Actions
{
private SortedDictionary<Tools.StatusOption,SolidColorBrush> StatusColors = new SortedDictionary<Tools.StatusOption,SolidColorBrush>();
static Actions()
{
StatusColors.Add(Tools.StatusOption.Online, new SolidColorBrush(Colors.Green));
// ....
}
}
問題は、私がすることはできません静的コンストラクターでプライベートメンバーStatusColorsにアクセスすると、StatusColorsのインスタンスを作成できません。
どのように解決するか?
ありがとうございました。
これは完全に問題を解決することができます。 staticメンバでunstaticメンバを使いたい場合は、 'this'の変数を宣言する必要があります。それ以外の場合は、メンバーを静的メンバーに変更できます。あなたのクラスが静的な場合は、すべてのメンバーを静的にする方がよいでしょう。 –