У меня есть тип перечисления в моей первой сборке, как показано ниже:Перемещение перечислений в другую сборку
public enum MyEnum
{
ONE,
TWO,
THREE
}
Так как я хотел продлить мое заявление, я решил перенести, что другую сборку (DLL) и свяжите его с моей первой сборкой.
Когда я это делаю, я получаю странный результат, когда я дестилизую классы, которые были сериализованы, когда перечисление было в первой сборке, все они возвращают первый член перечисления по умолчанию.
Есть ли решение о том, как это исправить? Я даже пытался разобрать это нравится:
(MyEnum)Enum.Parse(typeof(MyEnum), serializer.MyEnumType.ToString());
Это не имеет никакого эффекта.
PS. Я использую двоичный сериализатор, и перечисление находится в том же пространстве имен и все еще имеет то же имя.
[Serializable]
public class testClass
{
public MyEnum En { set; get; }
}
public class test
{
void Serialize(string file)
{
testClass ser = new testClass();
IFormatter formatter = new BinaryFormatter();
System.IO.FileStream stream = new FileStream(file, FileMode.Create, System.IO.FileAccess.Write, FileShare.None);
formatter.Serialize(stream, ser);
stream.Close();
}
void DeSerialize(string file)
{
IFormatter formatter = new BinaryFormatter();
testClass ser = new testClass();
System.IO.FileStream stream = new FileStream(file, FileMode.Open, FileAccess.Read, FileShare.None);
ser = (testClass)formatter.Deserialize(stream);
stream.Close();
}
}
показать свой код. – Steve
Возможный дубликат: http://stackoverflow.com/questions/12737602/cant-deserialize-with-binaryformatter-after-changing-namespace-of-class –
Также см .: http://stackoverflow.com/questions/25701481/is -it-possible-to-recover-an-object-serialized-by-binaryformatter-after-chang –