Я создаю библиотеку для взаимодействия с третьей стороной. Связь осуществляется через XML и HTTP сообщения. Это работает
Но, какой бы код ни использовал библиотеку, не нужно знать о внутренних классах. Мои внутренние объекты сериализуются в XML с использованием этого метода:
internal static string SerializeXML(Object obj)
{
XmlSerializer serializer = new XmlSerializer(obj.GetType(), "some.domain");
//settings
XmlWriterSettings settings = new XmlWriterSettings();
settings.Indent = true;
settings.OmitXmlDeclaration = true;
using (StringWriter stream = new StringWriter())
{
using (XmlWriter writer = XmlWriter.Create(stream, settings))
{
serializer.Serialize(writer, obj);
}
return stream.ToString();
}
}
Однако, когда я изменяю модификатор доступа моих классов на internal
, я получаю исключение в время выполнения :
* * 1010
[System.InvalidOperationException] = {"MyNamespace.MyClass недоступен из-за уровня защиты. Обрабатывать могут только открытые типы."}
Это исключение происходит в первой строке кода выше.
Я бы хотел, чтобы классы моей библиотеки не были публичными, потому что я не хочу их выставлять. Могу ли я сделать это? Как я могу сделать сериализуемые внутренние типы, используя мой универсальный сериализатор? Что я делаю не так?