Đọc this, 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à IEnumerable<T>
.Ràng buộc loại nhiều phương thức chung (OR)
public T DoSomething<U, T>(U arg) where U : IEnumerable<T>
{
return arg.First();
}
tôi thấy một số mã khác mà cho phép thêm nhiều trở ngại loại, 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 xuất hiện để thực thi mà arg
phải vừa một loại ParentClass
vàChildClass
. Những gì tôi muốn làm là nói arg mà có thể là một loại ParentClass
hayChildClass
theo cách sau đây:
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!
Bạn có thể làm gì một cách hữu ích, * theo cách chung chung * trong cơ thể của phương thức như vậy (trừ khi có nhiều kiểu xuất phát từ một lớp cơ sở cụ thể, trong trường hợp này không khai báo là ràng buộc kiểu)? –
@Damien_The_Unbeliever Bạn không chắc chắn ý mình là gì trong cơ thể? Trừ khi bạn có nghĩa là cho phép bất kỳ loại nào và kiểm tra thủ công trong nội dung ... và trong mã thực tế tôi muốn viết (đoạn mã cuối), tôi muốn có thể vượt qua chuỗi HOẶC ngoại lệ, vì vậy không có lớp học mối quan hệ ở đó (ngoại trừ system.object tôi tưởng tượng). – Mansfield
Cũng lưu ý rằng không sử dụng bằng văn bản 'trong đó T: chuỗi', vì' chuỗi' là một lớp ** được đóng dấu **. Đ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 mình bên dưới. –