Атрибут XmlInclude и производные классы - PullRequest
0 голосов
/ 30 марта 2011

Я использую сериализацию Xml для сохранения некоторых объектов на диске.

Структура класса следующая:

XmlInclude(typeof(BranchExplorerViewInfo))
public class ViewInfo
{
   ...
}

public class BranchExplorerViewInfo : ViewInfo
{
   ...
}

public class CustomBranchExplorerViewInfo: BranchExplorerViewInfo
{
   ...
}

Тогда мне нужно следующее поведение:

BranchExplorerViewInfo view = new BranchExplorerViewInfo();
view.GetType().IsSerializable; //I need this to be TRUE

CustomBranchExplorerViewInfo customView = new CustomBranchExplorerViewInfo();
customView.GetType().IsSerializable; //I need this to be FALSE

Итак, я хочу, чтобы BranchExplorerViewInfo был сериализуемым, а CustomBranchExplorerViewInfo - не сериализуемым. Есть ли атрибут для исключения типа / класса?

Заранее спасибо.

1 Ответ

2 голосов
/ 30 марта 2011

Вы путаете два совершенно разных типа сериализации.

С одной стороны, вы говорите о [XmlInclude], который связан с сериализацией XML.

С другой стороны, вы тестируете Type.IsSerializable, который связан с двоичной сериализацией (то есть относится к атрибуту [Serializable] и классу BinaryFormatter).

Хотя это оба типа сериализации, они очень разные и не связаны.

Нет такого простого эквивалентного теста "IsXmlSerialization", о котором я мог бы подумать.

...