2014-10-06 139 views
0

我有一個用於簽名記錄的asp.net服務器控件。該控件調用我的存儲過程來簽名記錄並調用日誌記錄存儲過程。我通過創建表格適配器的實例來調用我的c#代碼中的存儲過程。我試圖使它通用,以便它可以用於許多應用程序。所以我希望我的代碼根據我在使用該控件的頁面上設置的屬性創建不同表格適配器的實例。如何以編程方式創建表適配器實例? 這裏是現有的代碼。這適用於我已經使用此控件的特定頁面。動態創建TableAdapter實例

if (lblUniqueKey != null && lblUniqueKey.Text != "") { 
    int keyValue = Convert.ToInt32(lblUniqueKey.Text); 
    RCounty.eCa.HSDatasets.EFMTableAdapters.QueriesTableAdapter QTA = 
    new RCounty.eca.HSDatasets.EFMTableAdapters.QueriesTableAdapter(); 
    QTA.EFspSupSign(keyValue, UniqueKeyName, empid, empname); } 
+0

這樣做County.eCa .HSDatasets.EFMTableAdapters.QueriesTableAdapter QTA = new RCounty.eca.HSDatasets.EFMTableAdapters.QueriesTableAdapter();你正在編程創建一個TableAdapter。你在問如何創建一個* generic *表適配器,以便每個應用程序都可以給它們自己的表格適配器版本,並且你的代碼可以與上面的所有代碼一起工作? – 2014-10-06 18:43:38

+0

我想根據控件中屬性的值創建不同表格適配器的實例。我嘗試使用activator.createinstance,但我無法得到這個工作。 – jrupp 2014-10-07 18:49:07

+0

該屬性可以是「類型」類型嗎?或者它是一個字符串? – 2014-10-07 21:40:54

回答

0

幾件事情需要注意:

  1. 我在另一個項目,其組裝是「DataSetContainer」
  2. 我加載組件和類型的強類型數據集。
  3. 我通過在類型Activator.CreateInstance和實例myTableAdapterInstance,這在我的情況是:DataSetContainer.DataSetTableAdapters.ContactsTableAdapter

    var myTableAdapterType = Assembly.Load("DataSetContainer").GetType("DataSetContainer.DataSetTableAdapters.ContactsTableAdapter"); 
    var myTableAdapterInstance = Activator.CreateInstance(myTableAdapterType); 
    
    Response.Write(myTableAdapterInstance.GetType().ToString()); 
    

希望這回答你的問題:)

+0

感謝您的建議。我決定去一個不同的方向。 – jrupp 2014-10-08 20:34:15