Can't访问方法,因为它不易访问- c#

本文关键字:访问 易访问 因为 方法 Can | 更新日期: 2023-09-27 18:03:41

我正在用c#编写一个必须访问包含结构的所有内部类的表单。我得到的错误在这几行:

public frmSelectMusic(int mode, Module.MusicData data)
{
    InitializeComponent();
    switch (mode)
    {
        case 1:
            this.Text = "BGM";
            compileList("BGM");
            break;
        case 2:
            this.Text = "BGS";
            compileList("BGS");
            break;
        case 3:
            this.Text = "ME";
            compileList("ME");
            break;
        case 4:
            this.Text = "SE";
            compileList("SE");
            break;
    }
    this.mode = mode;
    if (data.name != "")
    {
        if (objList.Items.Contains(data.name))
        {
            objList.SelectedItem = data.name;
            cmdVolume.Value = data.volume / 10;
            cmdPitch.Value = (data.pitch - 50) / 10;
        }
    }
}

这是模块:

internal class Module
{
    internal static string mainPath;
    internal static string projectPath;
    internal struct MusicData
    {
        public int type;
        public string name;
        public int volume;
        public int pitch;
    }
}

我错过了什么?我应该使用公共而不是内部的模块?

Can't访问方法,因为它不易访问- c#

结构体MusicData被定义为内部类Module的内部结构体。

因此,如果函数的"路径"被"较低"访问修饰符(内部)阻塞,则无法访问公共内容。

内部访问修饰符基本上授予同一程序集中的任何人访问权限,而公共访问修饰符授予所有人访问权限。

所以你要么把internal改成public要么把public改成internal。

模块和模块。MusicData类是内部的,所以只对同一程序集中的代码可见,而frmSelectMusic构造函数是公共的,所以每个人都可以看到。这个公共构造函数(每个人都可以看到)接受一个参数Module。不能被所有人看到的MusicData结构,存在冲突。所以你应该把frmSelectMusic构造函数改成internal,或者Module和Module。