C# 如何解析System.RuntimeType由于其保护级别而无法访问。只能处理公共类型。?

C# 如何解析System.RuntimeType由于其保护级别而无法访问。只能处理公共类型。?,c#,serialization,C#,Serialization,我正在尝试序列化我的类。但我有以下例外 System.InvalidOperationException was unhandled HResult=-2146233079 Message=There was an error generating the XML document. Source=System.Xml StackTrace: at System.Xml.Serialization.XmlSerializer.Serialize(XmlWrite

我正在尝试序列化我的类。但我有以下例外

  System.InvalidOperationException was unhandled
  HResult=-2146233079
  Message=There was an error generating the XML document.
  Source=System.Xml
  StackTrace:
       at System.Xml.Serialization.XmlSerializer.Serialize(XmlWriter xmlWriter, Object o, XmlSerializerNamespaces namespaces, String encodingStyle, String id)
       at System.Xml.Serialization.XmlSerializer.Serialize(XmlWriter xmlWriter, Object o)
       at FormDemo.Form1.PivotGridSettings() in D:\Feature\XML Serialization\CS\Form1.cs:line 75
       at FormDemo.Form1..ctor() in D:\Feature\XML Serialization\CS\Form1.cs:line 32
       at FormDemo.Program.Main() in D:\Feature\XML Serialization\CS\Program.cs:line 25
       at System.AppDomain._nExecuteAssembly(RuntimeAssembly assembly, String[] args)
       at System.AppDomain.ExecuteAssembly(String assemblyFile, Evidence assemblySecurity, String[] args)
       at Microsoft.VisualStudio.HostingProcess.HostProc.RunUsersAssembly()
       at System.Threading.ExecutionContext.RunInternal(ExecutionContext executionContext, ContextCallback callback, Object state, Boolean preserveSyncCtx)
       at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state, Boolean preserveSyncCtx)
       at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state)
       at System.Threading.ThreadHelper.ThreadStart()
  InnerException: System.InvalidOperationException
       HResult=-2146233079
       Message=System.RuntimeType is inaccessible due to its protection level. Only public types can be processed.
       Source=System.Xml
       StackTrace:
            at System.Xml.Serialization.TypeDesc.CheckSupported()
            at System.Xml.Serialization.TypeScope.GetTypeDesc(Type type, MemberInfo source, Boolean directReference, Boolean throwOnError)
            at System.Xml.Serialization.XmlSerializationWriter.CreateUnknownTypeException(Type type)
            at Microsoft.Xml.Serialization.GeneratedAssembly.XmlSerializationWriterCustomSerializer.Write20_Type(String n, String ns, Type o, Boolean isNullable, Boolean needType)
            at Microsoft.Xml.Serialization.GeneratedAssembly.XmlSerializationWriterCustomSerializer.Write24_CustomClass(String n, String ns, CustomEngine o, Boolean isNullable, Boolean needType)
            at Microsoft.Xml.Serialization.GeneratedAssembly.XmlSerializationWriterCustomSerializer.Write25_CustomClass(String n, String ns, CustomSeriaizer o, Boolean isNullable, Boolean needType)
            at Microsoft.Xml.Serialization.GeneratedAssembly.XmlSerializationWriterCustomSerializer.Write26_CustomSerializer(Object o)
       InnerException: 
我的序列化代码是

XmlTextWriter xw = new XmlTextWriter("CustomClassSchema.xml", System.Text.Encoding.UTF8);
xw.Formatting = Formatting.Indented;
XmlSerializer serializer = new XmlSerializer(typeof(CustomSerializer));
CustomSerializer customSerializer = new CustomSerializer()
serializer.Serialize(xw, customSerializer);

请帮我解决这个问题。我需要对自定义类或任何自定义类进行自定义吗?

如果您无法为
CustomSerializer
类提供定义(从名称判断,尝试序列化是件奇怪的事情…),那么您看到此错误的原因是因为类包含一个公共属性,该属性要么是
RuntimeType
,要么继承自
RuntimeType
,要么包含
RuntimeType
属性本身。或者您的整个类继承了
RuntimeType

在任何情况下,
RuntimeType
似乎都是不可序列化的,因此您会看到异常


同样,由于不知道您的
CustomSerializer
是什么,我无法指出确切的解决方案-这可能很简单,就像使属性不可序列化一样…

我们需要查看您的
CustomSerializer
类定义。本质上,该类的某些部分是不可序列化的。而且,看起来你想。。。序列化序列化程序?这看起来有点奇怪,至少可以这么说。谢谢。但是我的自定义类是很大的代码部分。你能告诉我这些问题的根本原因吗?谢谢。我已将属性声明为类型。现在我通过包含[XmlIgnore]属性解决了这个问题