我有一个如下所示的代码,它将新类型添加到可序列化类型。\
public class ObjectArray : ArrayList
{
[NonSerialized]
static Type[] s_types = new Type[] { typeof(DataModelObject),
typeof(ViewObjectInfo)};
/// Add new types to the list of serializable types for ObjectArray
/// </summary>
/// <param name="newType">ObjectArray of types to add</param>
public static void AddSerializableTypes(ObjectArray newTypes)
{
string func = "ObjectArray.AddSerializableTypes";
if ((newTypes == null) || (newTypes.Count <= 0)) return; // Sanity check
// Preserve the old set of serializable types
Type[] tempTypes = new Type[s_types.Length + newTypes.Count];
for (int i = 0; i < s_types.Length; i++)
{
tempTypes[i] = s_types[i];
}
// Add the new types
for (int i = 0; i < newTypes.Count; i++)
{
tempTypes[s_types.Length + i] = (Type)newTypes[i];
}
s_types = tempTypes;
for (int i = 0; i < tempTypes.Length; i++) SpoDebug.DebugTraceVerbose(func, "Type=" + tempTypes[i].ToString());
// Create a new XmlSerializer with the new set of types
s_serializer = new XmlSerializer(typeof(ObjectArray), s_types);
}
在上面的代码中我在IDE中启用了CLR异常,行
s_serializer = new XmlSerializer(typeof(ObjectArray), s_types);
我正在异常“有一个错误反映了'_myClass'类型 InnerException:System.InvalidOperationException Message = Types'_myClass'和'_myClass'都使用来自命名空间''的XML类型名称'_myClass'。使用XML属性为类型指定唯一的XML名称和/或命名空间。“
但是当我检查类型调试器时,在调试器内部,我看到我的项目的所有类型的另一个例外是“'(s_types [x])。DeclaringMethod'引发了类型'System'的异常。 InvalidOperationException'{“方法只能在Type.IsGenericParameter为true的Type上调用。”}“。任何人都知道背后的原因是什么