只能在Type.IsGenericParameter为true的Type上调用Method,声明方法有问题

时间:2013-03-02 07:13:51

标签: c# visual-studio-2010 .net-4.0

我有一个如下所示的代码,它将新类型添加到可序列化类型。\

  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上调用。”}“。任何人都知道背后的原因是什么

0 个答案:

没有答案