辛格尔顿模式:Can';t看不到在Form中声明的类
本文关键字:看不到 Form 声明 模式 Can | 更新日期: 2023-09-27 17:59:35
我有Form1
:的Singleton模式
private Form1()
{
InitializeComponent();
}
private static Form1 _Instance;
public static Form1 Instance
{
get
{
if (_Instance == null)
_Instance = new Form1();
return _Instance;
}
}
另外,我有下一个类,它以主形式Form1
:声明
public class Question
{
public Question(string q_text, Dictionary<string, bool> ans)
{
text = q_text;
answers = ans;
}
public string text { get; set; }
public Dictionary<string, bool> answers { get; set; }
}
但是,当我在形式EditQuestions
中想要声明这样的dictionary:Dictionary<int, Form1.Instance.Question> quest = quest = Form1.Instance.questions;
时,它会在Question
下加下划线。重点是在Form1中我有一些问题。在EditQuestions
表格中,我想编辑问题。在Dictionary<int, Question> questions
中,我保存这些问题。我认为我可以编辑EditQuestions
表格中的问题,然后在Form1
中将编辑后的词典分配给Dictionary<int,Question> questions
问题在于字典的定义。
Dictionary<int, Form1.Instance.Question> quest
在这里,您实际上是在请求引用Form1的Question成员,但Form1没有一个名为Question的成员。Form1所具有的是嵌套类型的Question。对于Dictionary的定义,您需要一个Type而不是对象引用。
把你的字典改成这样,它应该可以工作
Dictionary<string, Form1.Question> quest
此外,如果您使用的是.NET4或更高版本,创建单例的一种更干净、更安全的方法是使用Lazy类,就像一样
private static readonly Lazy<Form1> SingletonInstance = new Lazy<Form1>(() => new Form1());
private Form1()
{
}
public static Form1 Instance
{
get { return SingletonInstance.Value; }
}