Tôi có một giao diện cho một tài sản đồ còn yếu kém:Đúc giá trị cho T trong một phương pháp chung
interface IPropertyMap
{
bool Exists(string key);
int GetInt(string key);
string GetString(string key);
//etc..
}
Tôi muốn tạo ra một phương pháp mở rộng như vậy:
public static T GetOrDefault<T>(this IPropertyMap map, string key, T defaultValue)
{
if (!map.Exists(key))
return defaultValue;
else
{
if (typeof(T) == typeof(int)) return (T)map.GetInt(key);
//etc..
}
}
Nhưng trình biên dịch won Đừng để tôi truyền sang T. Tôi đã thử thêm where T : struct
nhưng điều đó dường như không giúp ích gì.
Tôi đang thiếu gì?
Tôi đoán đó là lỗi đánh máy, nhưng tất cả các phương thức trong giao diện của bạn đều trả về bool ...? –
Yup, sao chép-dán là người bạn nguy hiểm của tôi ... – Benjol