編輯:我發現如果將IMetadataType對象轉換爲TMetadata類型,我可以編譯它。爲什麼我需要這樣做?使用C#中的通用方法編譯錯誤
編輯#2:「值」屬性是一個.NET字典的類型< TMetadata,TData >。
我有這樣的泛型方法:
private void FillMetadata<TMetadata, TData>
(Metadata<TMetadata, TData> oMetadata) where TMetadata : IMetadataType
{
IMetadataType o;
oMetadata.Values.Add(o, (TData)(object)GetValue());
}
我已經剝離,以簡化執行它(我實際使用一個真正的對象,而不是IMetadataType這裏聲明)。
我的問題是,爲什麼不編譯?編譯錯誤在Add()方法上:「無法從'IMetadataType'轉換爲'TMetadata'。」這不是說方法中的「where」子句是什麼嗎?
我錯過了什麼?
對不起,「值」屬性是類型的字典。 –
Carl
2008-12-11 16:23:03
謝謝。你的意思是即使元數據類在類上也有相同的where子句,我仍然無法做到這一點? – Carl 2008-12-11 16:27:21