2011-06-29 27 views
4

我收到錯誤至T轉換爲實體如何轉換噸至對象

public T Add(T entity) 
{ 
    CAFMEntities db = new CAFMEntities(); 
    db.TabMasters.AddObject((TabMaster)entity); 
    db.SaveChanges(); 
    return entity; 
} 

這是給我一個錯誤:

Cannot convert type 'T' to 'CAFM.Data.EntityModel.TabMaster'

感謝。

回答

11

那麼,你想如何應用轉換? T宣佈在哪裏?您可能可以對其進行更改,以便您擁有:

class WhateverClass<T> where T : TabMaster 

此時您不需要演員。或者,如果你不能約束T,你可以使用:

db.TabMasters.AddObject((TabMaster)(object) entity); 

另一種方法是:

db.TabMasters.AddObject(entity as TabMaster); 

雖然個人,我沒有喜歡的 - 我喜歡的嚴格檢查演員。

+0

將'實體作爲TabMaster'工作嗎? – abatishchev

+0

@abatishchev:顯然是這樣,雖然當然你沒有得到好的檢查。將添加作爲一個選項。 –

+1

@abatischev不像你的文章那樣:'as'只能用於引用類型,但'T'不受限制,現在如果'where T:class'(或者其他引用類型被約束),那麼是。 – 2011-06-29 05:30:35