我有一個方法傳遞一個對象作爲一個通用的。請注意,這些對象不是從同一個類派生的。我有一個函數,我想打電話不管類型,但無法調用,因爲它不能確定類型。通用對象調用方法
'T' does not contain a definition for 'Validate'
和代碼
public void VerifyInput<T>(T obj)
{
((T)obj).Validate();
}
這被用來驗證傳入的用戶數據,每一類都是負責制定自己的驗證,但他們不一定任何關係。 我簡化了這個,但基本問題依然存在。我怎樣才能轉換泛型的類型來調用對象方法?
除非您的類從包含'Validate'方法的相同基類派生,或者使用此方法實現接口,否則不能這樣做。然後你可以將T泛型參數約束到這個基類或接口。 –
在C#中這是不可能的,除非你用方法'Validate'指定一個接口,然後檢查泛型類型,比如「where T:IValidate',其中'IValidate'是方法的接口。 – Bauss
謝謝,我要補充說我知道一般的約束條件,但是希望我可以在沒有它的情況下執行此操作,我很感謝這個更新 – McArthey