Có thể viết các công trình tương tự không?
Tôi muốn thiết, bằng cách nào đó, giá trị mặc định cho đối số kiểu T.Các phương pháp chung và các đối số tùy chọn
private T GetNumericVal<T>(string sColName, T defVal = 0)
{
string sVal = GetStrVal(sColName);
T nRes;
if (!T.TryParse(sVal, out nRes))
return defVal;
return nRes;
}
Bên cạnh đó, tôi thấy liên kết sau: Generic type conversion FROM string
Tôi nghĩ rằng, mã này phải làm việc
private T GetNumericVal<T>(string sColName, T defVal = default(T)) where T : IConvertible
{
string sVal = GetStrVal(sColName);
try
{
return (T)Convert.ChangeType(sVal, typeof(T));
}
catch (FormatException)
{
return defVal;
}
}
Có, tôi không thể gọi TryParse. Nhưng có lẽ một cái gì đó tương tự? Có lẽ thêm một số ràng buộc để loại tham số (tôi có nghĩa là 'ở đâu: ...')? Nếu các kiểu số thực hiện một số giao diện chuyển đổi. – hardsky
CLR không có khái niệm về "các phương thức tĩnh ảo", trình biên dịch không thể suy ra các phương thức tĩnh từ một kiểu. Theo như tôi biết không có giải pháp sạch cho điều đó. –
http://stackoverflow.com/questions/196661/calling-a-static-method-on-a-generic-type-parameter để biết thêm chi tiết –