Đọc điều này , tôi đã học được rằng có thể cho phép một phương thức chấp nhận các tham số của nhiều loại bằng cách biến nó thành một phương thức chung. Trong ví dụ này, đoạn mã sau được sử dụng với ràng buộc kiểu để đảm bảo "U" là một IEnumerable<T>
.
public T DoSomething<U, T>(U arg) where U : IEnumerable<T>
{
return arg.First();
}
Tôi đã tìm thấy một số mã cho phép thêm nhiều ràng buộc kiểu, chẳng hạn như:
public void test<T>(string a, T arg) where T: ParentClass, ChildClass
{
//do something
}
Tuy nhiên, mã này dường như bắt buộc arg
phải là cả một loại ParentClass
và ChildClass
. Những gì tôi muốn làm là nói rằng arg có thể là một loại ParentClass
hoặc ChildClass
theo cách sau:
public void test<T>(string a, T arg) where T: string OR Exception
{
//do something
}
Sự giúp đỡ của bạn được đánh giá cao như mọi khi!
where T : string
, như string
là một lớp kín . Điều hữu ích duy nhất bạn có thể làm là xác định tình trạng quá tải cho string
và T : Exception
, như được giải thích bởi @ Botz3000 trong câu trả lời của ông dưới đây.
arg
là các phương thức được xác định bởiobject
- vậy tại sao không loại bỏ khái quát khỏi hình ảnh và tạo kiểu arg
object
? Bạn đang đạt được gì?