【发布时间】:2011-09-03 15:25:37
【问题描述】:
我正在构建一个库来与第三方交互。通信是通过 XML 和 HTTP Posts 进行的。那行得通。
但是,任何使用该库的代码都不需要了解内部类。我的内部对象使用这种方法序列化为 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 时,运行时出现异常:
[System.InvalidOperationException] = {"MyNamespace.MyClass 由于其保护级别而无法访问。只能处理公共类型。"}
该异常发生在上述代码的第一行。
我希望我的图书馆的课程不公开,因为我不想公开它们。我可以这样做吗?如何使用我的通用序列化程序使内部类型可序列化?我做错了什么?
【问题讨论】:
-
有时我忘记了 GC 并不能解决所有问题。我修复了代码并发布了它。
标签: c# xml oop serialization xml-serialization