簡體   English   中英

獲取不一致的可訪問性錯誤

[英]Getting Inconsistent accessibility error

我有點問題,我似乎無法解決它可以有人幫助我,
這些是錯誤:

錯誤1可訪問性不一致:字段類型“Flashloader.Toepassing”比字段“Flashloader.NewApplication.Toepassing”更難訪問

錯誤2可訪問性不一致:參數類型'Flashloader.toepassinginifile'比方法'Flashloader.NewApplication.NewApplication(Flashloader.toepassinginifile)'更難訪問

因此,在這種情況下,錯誤但來源非常有用。

Source 1新應用程序(這是一個Winform):

namespace Flashloader{

public partial class NewApplication : Form
{
    private toepassinginifile _toepassinginifile;

    //private controllerinifile _controlIniFile;

    public Toepassing toepassing = new Toepassing();

    public NewApplication(toepassinginifile iniFile)
    {
        _toepassinginifile = iniFile;

        InitializeComponent();
    }

    private void button4_Click(object sender, EventArgs e)
    {
        this.Close();
    }

    private void button1_Click(object sender, EventArgs e)
    {
        openFileDialog1.Filter = "Srec Files (.a20; .a21; .a26; .a44)|*.a20; *.a21; *.a26; *.a44|All files (*.*)|*.*";

        openFileDialog1.Title = ("Choose a file");
        openFileDialog1.InitialDirectory = Path.Combine(Directory.GetCurrentDirectory());
        openFileDialog1.RestoreDirectory = true;
        if (openFileDialog1.ShowDialog() == DialogResult.OK)
        {
            fileBox.Text = (System.IO.Path.GetFileName(openFileDialog1.FileName));
        }
    }

    private void button3_Click(object sender, EventArgs e)
    {
        toepassing.Name = nameBox.Text;
        toepassing.Controller = controllerComboBox.SelectedItem;
        toepassing.TabTip = descBox.Text;
        toepassing.Lastfile = openFileDialog1.FileName;
        fileBox.Text = openFileDialog1.FileName;


        if (nameBox.Text == "")
            MessageBox.Show("You haven't assigned a Name");
        else if (controllerComboBox.Text == "")
            MessageBox.Show("You haven't assigned a Controller");
        else if (descBox.Text == "")
            MessageBox.Show("You haven't assigned a Desciption");
        else if (fileBox.Text == "")
            MessageBox.Show("You haven't assigned a Applicationfile");
        _toepassinginifile.ToePassingen.Add(toepassing);
        _toepassinginifile.Save();

        MessageBox.Show("Save Succesfull");



        this.Close();
    }

}}

Source 2 flashloader.toepassing文件(這是一個類):

namespace Flashloader{
class Toepassing
{
    private String _name;

    public String Name
    {
        get { return _name; }
        set { _name = value; }
    }

    public Controller Controller = null;
    public String TabTip = "";
    public String Lastfile = "";

  [Obsolete]
  public String Baudrate = "";

  [Obsolete]
  public String Port = "";

  public String Useboot = "";

    public Toepassing()
    {
        Name = "";
    }

    public Toepassing(String naam)
    {
        Name = naam;
    }

    public override String ToString()
    {
        return Name + " :" + TabTip;
    }
}
}

最后源3 flashloader.toepassinginifile(另一個類):

namespace Flashloader
{
class toepassinginifile
{
    private const String FILE_NAME = "flash.ini";
    private Controllerlist _controllers;
    public Toepassinglist ToePassingen { get; private set; }
    public Settings Settings { get; private set; }


    public toepassinginifile( Controllerlist controllers)
    {
        _controllers = controllers;

        // TODO Startup class maken en laden
        ToePassingen = LoadToepassingen();
    }

    private Toepassinglist LoadToepassingen()
    {
        StringList input = new StringList().FromFile( FILE_NAME );
        Toepassinglist output = new Toepassinglist();

        Settings settings = null;
        Toepassing toepassing = null;

        foreach (var item in input)
        {
            String line = item.Trim();

            if (line.StartsWith("[") && line.EndsWith("]"))
            {
                settings = null;
                toepassing = null;

                String name = line.Substring(1, line.Length - 2);

                if (name.ToUpper().Equals("STARTUP"))
                {
                    Settings = settings = new Settings();
                    continue;
                }
                // TODO kan weg in de toekomst
                if ( name.ToUpper().Equals("DRAG && DROP"))
                {
                    toepassing = null;
                    continue;
                } // */

                toepassing = new Toepassing(name);
                output.Add(toepassing);
            }
            else if (settings != null)
            {
                int index = line.IndexOf('=');
                if (index < 0)
                    continue;

                String key = line.Substring(0, index).Trim();
                String value = line.Substring(index + 1).Trim();

                if (Utils.EqualsIgnoreCase(key, "Baudrate"))
                    Settings.Baudrate = value;
                else if (Utils.EqualsIgnoreCase(key, "Port"))
                    Settings.Port = value;
            }
            else if (toepassing != null)
            {
                int index = line.IndexOf('=');
                if (index < 0)
                    continue;

                String key = line.Substring(0, index).Trim();
                String value = line.Substring(index + 1).Trim();

                if (Utils.EqualsIgnoreCase(key, "TabTip"))
                    toepassing.TabTip = value;
                else if (Utils.EqualsIgnoreCase(key, "Controller"))
                    toepassing.Controller = _controllers.FindByName(value);
                else if (Utils.EqualsIgnoreCase(key, "Lastfile"))
                    toepassing.Lastfile = value;
                else if (Utils.EqualsIgnoreCase(key, "Useboot"))
                    toepassing.Useboot = value;
            }
        }
        return output;
    }

    public void Save()
    {
        StringList list = new StringList();

        Toepassing settings = new Toepassing("[Startup]");

        list.Add("["+settings.Name+"]");
        list.Add("LastUsed=");
        list.Add("Port=" +settings.Port);
        list.Add("Baudrate=" +settings.Baudrate);

        foreach (Toepassing item in ToePassingen)
        {
            list.Add( "[" + item.Name + "]" );
            list.Add( "Controller=" + item.Controller.Name );
            list.Add( "TabTip="+ item.TabTip );
            list.Add("LastFile="+ item.Lastfile);
            list.Add("UseBoot="+ item.Useboot);
        }

        Toepassing dragndrop = new Toepassing("[Drag && Drop]");

            list.Add("["+dragndrop.Name+"]");
            list.Add("Autostart=");
            list.Add("Baudrate="+ dragndrop.Baudrate);
            list.Add("Port="+ dragndrop.Port);
            list.Add("Lasfile="+ dragndrop.Lastfile);

        list.ToFile(FILE_NAME);
    }
}
}

如果我能得到一些幫助,那么解決錯誤會容易得多。

修復

由於toepassinginifile用於public類型的public方法,它必須由public (它當前是internal )。 更改:

class toepassinginifile

至:

public class toepassinginifile

甚至更好; p

public class ToePassingIniFile

同樣對另一方而言,由於Toepassing被用作public類型的public領域, Toepassing本身必須是public

最后的想法: public領域很少是一個好主意; 最好是public 財產

private Toepassing toepassing = new Toepassing();
public Toepassing Toepassing  {get { return toepassing; } }

在您的課程聲明之前添加公共。 你的第一堂課是公開的,所以Toepassinginifile和Toepassing也必須公開。

您遇到的錯誤是,您將無法使用您班級中的公共方法,因為該類被標記為私有

默認情況下,類是內部的

class ClassName
{
public void Method()

上面會出錯,因為你永遠不能調用方法,因為類的可訪問性低於方法

private bool Property {get; public set;}

willl可能也是錯誤的

看到這個

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM