屬性" ******** "的代碼生成失敗.錯誤是:"程序集"********.Version=1.0.0.0,Culture=neutral,..........無標記為序列化""](轉)


開發時在做UserControl,需要注意的List<>集合問題~~~!

其他類型的集合可能也存在這樣的問題,但是我沒去測試,在寫集合的時候一般List<>用的多點,所以經常碰到以下錯誤:

提示:屬性" ******** "的代碼生成失敗.錯誤是:"程序集"********.Version=1.0.0.0,Culture=neutral,..........無標記為序列化""]

例如下面一個MyUserControl,其中寫了一個List<>屬性

 

[csharp]  view plain  copy
 
  1. public partial class MyUserControl : UserControl  
  2.  {  
  3.     public MyUserControl()  
  4.    {  
  5.      InitializeComponent();  
  6.      m_ReceiverList = new List<DuxUser>();  
  7.    }  
  8.   
  9.     public MyUserControl(List<DuxUser> receiverlist)  
  10.    {  
  11.      InitializeComponent();  
  12.      m_ReceiverList = receiverlist;  
  13.    }  
  14.  
  15.    #region Properties  
  16.   
  17.    private List<DuxUser> m_ReceiverList=null;  
  18.    public List<DuxUser> ReceiverList  
  19.    {  
  20.      get { return m_ReceiverList; }  
  21.      set  
  22.      {  
  23.        m_ReceiverList = value;  
  24.      }  
  25.    }  
  26.    #endregion  
  27.  }  
  28.   
  29.  public class DuxUser     //定義的一個DuxUser類  
  30.  {  
  31.    public DuxUser() { }  
  32.  }  


這個MyUserControl代碼看起來時沒有任何問題的,但是只要你往窗體上一拖就是報上面紅色字體的錯誤,如果你是寫代碼添加到窗體上是不會出錯的,只要拖到窗體上去就會報錯!

 

為什么會這樣呢?

例如: 把一個MyUserControl控件拖到一個Form1上,那么Form1.Designer.cs里就會出現這么一條代碼:

this.myUserControl1.ReceiverList = 

((System.Collections.Generic.List<DuxUser>)(resources.GetObject("myUserControl1.ReceiverList")));

這段代碼就是錯誤的根源,因為DuxUser類沒有標記為可序列化 [Serializable],所以List<DuxUser>也就不能序列化啦!

為什么Form1.Designer.cs中會有那么一段代碼呢,原因在MyUserControl的無參數構造函數上:

m_ReceiverList = new List<DuxUser>();

 

我們在做集合的時候,一般都會給他實例化一下,這樣可以避免調用控件的集合Add() 或者 Remove,foreach 等操作的時候出現Null值異常!

但是就是這段代碼,Form1.Designer.cs文件中自動生成了那么一段怪代碼,導致出錯

解決的辦法有3種:

1. 無參數構造方法中 m_ReceiverList=null 或者不寫; 然后再Load事件中進行初始化),那么在Form1.Designer.cs中看到的就是this.ReceiverList = null;

    需要注意的是:Load事件中要判斷集合是否為null值,是null才去初始化,因為有可能是手動寫代碼添加到容器(如:窗體),而不是拖,寫代碼的方式有可能在Load之前給集合屬性賦值

2. 把DuxUser類,標記為可序列化的類[Serializable]

[csharp]  view plain  copy
 
  1. [Serializable]  
  2. public class DuxUser  
  3. {  
  4.   public DuxUser() { }  
  5.     
  6.   //.........  
  7. }  

3. 如下:

[csharp]  view plain  copy
 
  1. private List<DuxUser> m_ReceiverList=null;  
  2.   
  3. [Bindable(false), Browsable(false)]  
  4. [DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden)]  
  5. public List<DuxUser> ReceiverList  
  6. {  
  7.   get { return m_ReceiverList; }  
  8.   set  
  9.   {  
  10.     m_ReceiverList = value;  
  11.   }  
  12. }  

想看到下面這段代碼,請選擇第二種方法(把類[DuxUser]標記為可序列化):

this.myUserControl1.ReceiverList = ((System.Collections.Generic.List<DuxUser>)(resources.GetObject("myUserControl1.ReceiverList")));

第一:寫在這里是為了做筆記..(好記性不如爛筆頭)

第二:願有緣人找到此代碼,以免出來問題束手無策.....

 

 

在使用編寫完成的用戶控件時,有時會現理某某屬性代碼生成失敗,程序集未標記為可序列化,解決方法參考另一位博主寫的很好的

點擊打開鏈接

我按照上面做還是沒能解決問題,然后我想了一下,還要做如下工作

1、清理項目

2、重新添加項目間引用(如果需要)

3、刪除該用戶控件所在項目的bin和obj目錄

4、關閉VS,重新生成

大功告成!

非常感謝 點擊打開鏈接

 

轉:http://blog.csdn.net/blogtjf/article/details/47098689

轉:http://blog.csdn.net/wxm3630478/article/details/4295122


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



猜您在找 未知的生成錯誤“因為沒有預加載,所以無法解析程序集“XXXX, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null”的依賴項。在使用 ReflectionOnly API 時,必須通過 ReflectionOnlyAssemblyResolve 事件預加載或按需要加載依賴程序集。 未能加載文件或程序集“Common, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null Umbraco5.0學習筆記(一):程序集“xx”中的類型“xx"未標記為可序列化。 未能加載文件或程序集“XXXX, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null”或它的某一個依賴項。系統找不到指定的文件。 未能加載文件或程序集“UFIDA.U8.UAP.GcRegister, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null”或它的某一個依賴項 未能加載文件或程序集“**, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null”或它的某一個依賴項。試圖加載格式不正確的程序。 未能加載文件或程序集“AxInterop.iPlotLibrary,Version=1.0.0.0,culture=neutral,PublicKeyToken=null”,試圖加載格式不正確的程序 VS2012創建MVC3項目提示錯誤: 此模板嘗試加載組件程序集 “NuGet.VisualStudio.Interop, Version=1.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a”。 未能加載文件或程序集 Microsoft.Web.Infrastructure, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad 未能加載文件或程序集"Microsoft.Web.Infrastructure, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad
 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM