我有两个课程:一个是学生考试,第二个是教师考试(教师创建一些测试变体并添加问题);教师程序通过测试创建.bin文件,然后学生打开并进行测试。数据结构(class Question
)在两个程序中都类似;
老师的程序类代码:
[Serializable]
public class Question
{
public Question(string q_text, Dictionary<string, bool> ans, Image img)
{
text = q_text;
answers = ans;
image = img;
isAnswered = false;
}
public string text { get; set; }
public Dictionary<string, bool> answers { get; set; }
public Image image { get; set; }
public bool isAnswered;
public static void PersistObject(Dictionary<int, Question> q, Stream stream)
{
BinaryFormatter formatter = new BinaryFormatter();
formatter.Serialize(stream, q);
stream.Close();
}
public static Dictionary<int, Question> LoadObject(Stream stream)
{
try
{
BinaryFormatter formatter = new BinaryFormatter();
Dictionary<int, Question> deserializedObject = (Dictionary<int, Question>)formatter.Deserialize(stream);
stream.Close();
return deserializedObject;
}
catch
{
return null;
}
}
}
}
和学生的课程代码:
[Serializable]
class Question
{
public Question(string text, Image img, Dictionary<string, bool> ans)
{
question_text = text;
image = img;
answers = ans;
isAnswered = false;
}
public string question_text { get; set; }
public Dictionary<string, bool> answers { get; set; }
public Image image { get; set; }
public bool isAnswered;
public static Dictionary<int, Question> LoadObject(Stream stream)
{
try
{
BinaryFormatter formatter = new BinaryFormatter();
Dictionary<int, Question> deserializedObject = (Dictionary<int, Question>)formatter.Deserialize(stream);
stream.Close();
return deserializedObject;
}
catch
{
return null;
}
}
}
但是当我尝试在学生计划中阅读一些测试时:
string file = path + test_number + ".bin";
Stream myStream = File.Open(file, FileMode.Open);
questions = Question.LoadObject(myStream);
它将questions
设置为null。但是当我在教师程序中阅读这些文件时,它就可以了。(也许,它没关系,因为我也在教师模式下创建这些文件)。 questions
的类型为Dictionary<int,Question>
。问题是什么?