0

Filepaths以下のコードでは、配列を変数に割り当てようとしていますm_settingsFilepaths、LINQメソッドの外部では認識されません。メソッドFilePathsで使用できる変数にコンテンツを保存するにはどうすればよいですか?SolveInstance

public void ShowSettingsGui()
{
    var dialog = new OpenFileDialog()
    {
        Multiselect = true,
        Filter = "Data Sources (*.ini)|*.ini*|All Files|*.*"
    };
    if (dialog.ShowDialog() != DialogResult.OK) return;
    var paths = dialog.FileNames;
    var FilePaths = paths.ToDictionary(filePath => filePath, File.ReadAllText);
}

private string[] m_settings = Filepaths;  

protected override void SolveInstance(IGH_DataAccess DA)
{
    if (m_settings == null)
    {
        AddRuntimeMessage(GH_RuntimeMessageLevel.Warning, "You must declare some valid settings");
        return;
    }

    DA.SetData(0, m_settings);
}
4

2 に答える 2

3

読みすぎている可能性がありますが、FilePathsは必要ないと思います。m_settingsを直接設定するだけです...

private Dictionary<string, string> m_settings;  

public void ShowSettingsGui()
{
    var dialog = new OpenFileDialog()
    {
        Multiselect = true,
        Filter = "Data Sources (*.ini)|*.ini*|All Files|*.*"
    };
    if (dialog.ShowDialog() != DialogResult.OK) return;
    var paths = dialog.FileNames;
    m_settings = paths.ToDictionary(filePath => filePath, File.ReadAllText);
}

protected override void SolveInstance(IGH_DataAccess DA)
{
    if (m_settings == null)
    {
        AddRuntimeMessage(GH_RuntimeMessageLevel.Warning, "You must declare some valid settings");
        return;
    }

    DA.SetData(0, m_settings);
}

また、ShowSettingsGuiの後にSolveInstanceが呼び出されるようにする必要があります。そうしないと、m_settingsは常にnullになります

于 2012-08-13T01:18:33.790 に答える
1
public void ShowSettingsGui()
{
    var dialog = new OpenFileDialog()
    {
        Multiselect = true,
        Filter = "Data Sources (*.ini)|*.ini*|All Files|*.*"
    };
    if (dialog.ShowDialog() != DialogResult.OK) return;
    var paths = dialog.FileNames;
    var FilePaths = paths.ToDictionary(filePath => filePath, File.ReadAllText);

    // You need to add this
    this.m_settings  = FilePaths;
}

// You also need to change the type of m_settings from string[] to Dictionary<string, string>
private Dictionary<string, string> m_settings = Filepaths;  

protected override void SolveInstance(IGH_DataAccess DA)
{
    if (m_settings == null)
    {
        AddRuntimeMessage(GH_RuntimeMessageLevel.Warning, "You must declare some valid settings");
        return;
    }

    DA.SetData(0, m_settings);
}
于 2012-08-13T01:17:32.143 に答える