Проблема заключается в том, что я получаю нулевой отсчет в репо, когда десериализации его (без каких-либо ошибок)Deserializtion возвращают пустой объект, используя FileStream и Binary Formatter
[Serializable]
class RegexRepository : Dictionary<string, string>
{
public RegexRepository()
{
//this.Add("All", "ALL");
//this.Add("Name", @"Name:(?<data>[\s\w]+)Email");
//this.Add("Email", @"Email:(?<data>[\w\[email protected]]+\.com)");
//this.Add("Phone Number", "Phone:(?<data>\\d+)");
}
protected RegexRepository(SerializationInfo info, StreamingContext context)
{
}
private static RegexRepository repo = new RegexRepository();
public static RegexRepository Instance
{
get
{
if (repo == null)
{
repo = new RegexRepository();
}
return repo;
}
}
string FileName = AppDomain.CurrentDomain.BaseDirectory + "BinaryFile.dat";
public void Serialize()
{
using (FileStream ms = new FileStream(FileName, FileMode.OpenOrCreate))
{
var bf = new BinaryFormatter();
bf.Serialize(ms, this);
}
}
public void Deserialize()
{
if (System.IO.File.Exists(FileName))
{
using (FileStream ms = new FileStream(FileName, FileMode.Open))
{
var bf = new BinaryFormatter();
repo = (RegexRepository)bf.Deserialize(ms);
//Here i get zero count in repo, checked while debugging
}
}
}
}
Я видел BinaryFile.dat не пусто и Я вижу некоторые записи в нем. Пожалуйста, помогите мне
Я предполагаю, что у вас возникла эта проблема, потому что класс словаря, который вы получили, не помечен как сериализуемый. В этом случае я думаю, что вам нужен суррогат. Это может быть ваш [ответ] (http://stackoverflow.com/questions/13166105/is-it-possible-to-do-net-binary-serialization-of-an-object-when-you-dont-have) , Вопрос в том, действительно ли вам нужно вывести свой класс из класса Dictionary? –
@KosalaW - 'Словарь' сериализуем. См. [Источник ссылки] (http://referencesource.microsoft.com/#mscorlib/system/collections/generic/dictionary.cs). –
dbc
@KosalaW это будет легко для меня, если я не использую производный класс? любезно проверьте ответ dbc. он говорит, что мне не нужно имя файла. Как? – Charlie