Tôi có một lớp chung và tôi muốn thực thi các trường hợp của tham số kiểu luôn là "có thể chuyển đổi"/chuyển đổi từ Chuỗi. Có thể làm điều này mà không ví dụ bằng cách sử dụng một giao diện?Làm cách nào để kiểm tra xem có tồn tại ẩn hoặc rõ ràng không?
có thể thực hiện:
public class MyClass<T> where T : IConvertibleFrom<string>, new()
{
public T DoSomethingWith(string s)
{
// ...
}
}
thực hiện lý tưởng:
public class MyClass<T>
{
public T DoSomethingWith(string s)
{
// CanBeConvertedFrom would return true if explicit or implicit cast exists
if(!typeof(T).CanBeConvertedFrom(typeof(String))
{
throw new Exception();
}
// ...
}
}
Lý do tại sao tôi nghĩ tình trạng này "lý tưởng" thực hiện chủ yếu là để không để buộc tất cả các Ts để thực hiện IConvertibleFrom <> .
điều gì lý tưởng về việc triển khai phản ứng với lỗi thời gian lập trình với ngoại lệ thời gian chạy? –
nếu bạn có một loạt các loại đã chuyển đổi từ chuỗi và bạn muốn sử dụng chúng trong một lớp/phương pháp mới theo cách tôi mô tả trừu tượng, đây sẽ là cách ít tốn kém nhất để triển khai nó. Nó sẽ là một loại sơn để chỉnh sửa mọi loại và thực hiện giao diện mới. –