[英]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.