2

最小限のユーザー入力に基づいてファイルを検索、解析、および書き込む WPF アプリケーションを作成しています。メインウィンドウ クラスに (別のクラスのメソッドへの) メソッド呼び出しがあり、2 つの別々のファイルから解析されたさまざまな情報が必要です。現在、ソース ファイルを解析し、アプリケーションの別の機能のために解析されたデータの配列を返す別のメソッドがあります。そのメソッド内には、最初の呼び出しに必要な情報を格納するためのパブリック変数がいくつかあります。これは、現在の状況を明確にするためにいくつかのコードを添付した、個々の情報ごとに解析されたデータを検索するための個別のメソッドを記述せずに、これらのアイテムにアクセスする方法を理解できる唯一の方法です。

//From mainwindow.xaml.cs

private void button1_Click(object sender, RoutedEventArgs e)
        {
        string[] path = ff.Search(fw.sysName, fw.design, fw.partNumber);//From FileFinder class
        string[] parsedData = fp.Parse(path);//From FileProcessor class
        string[] summary = fw.SummaryWriter(parsedData, fw.masterList);//From FileWriter class
        Output.Text = "";
        foreach (string str in summaryvalues)
        {
            Output.Text += (str + "\n");
        }
    }

ff.Search() と fw.SummaryWriter() で使用される変数は、FileWriter.cs から呼び出されます。

   class FileWriter
   {

    public string sysName;
    public string design;
    public string partNumber;
    public List<string> masterList = new List<string>();

    public string[] MasterWriter(string input, int source)
    {
          //Do stuff. The data for the public variables is mined from this method.

    }

    public string[] SummaryWriter(string[] parsedData, List<string> moduleMasterList)
    {
          //Do stuff
    }
}

私が持っている質問は、それらを公開せずにこれらの変数にアクセスするにはどうすればよいですか?

4

2 に答える 2

3

まず、パブリック フィールドを持つのではなく、プライベート フィールドを公開するパブリック プロパティにそれらをカプセル化するのはどうですか? 例:

private string somePrivateField;
public string SomePrivateField
{
    get
    {
        return this.somePrivateField;
    }
    set
    {
        this.somePrivateField = value;
    }
}

物件情報はこちらのサイトをご覧ください

第 2 に、複数の値を返す必要がある可能性のあるメソッドに遭遇した場合は、メソッドへのパラメーターを作成するか、戻り値を独自のクラスにカプセル化して、そのクラスのインスタンスを返すことができます。

public void SomeMethod(int inputParameter, out int outvar1, out int outvar2)
{
...
}

outキーワードについてはこちらのサイトをご覧ください

また

public SomeMethodOutput SomeMethod(int inputParameter)
{
...
return new SomeMethodOutput(number1, number2);
}

SomeMethodOutput は、2 つのプロパティを持つクラスです。

于 2013-01-30T21:03:31.557 に答える
0

getter メソッドを作成します。

class Foo
{
private int _bar;

public void GetBar()
{ return _bar;}
}
于 2013-01-30T20:58:51.863 に答える