Tôi đã có một giao diện với một số phương thức chung, và tôi muốn thực hiện một phương thức với quá tải để chấp nhận một thể hiện của một lớp hoặc giá trị PK của nó (đó là int hoặc GUID nhưng không thay đổi).Contraints chung về phương thức overloads
tôi thêm vào các phương pháp tương tự như các ví dụ:
void DoSomething<TKey>(TKey key) where TKey: struct;
void DoSomething<TModel>(TModel model) where TModel : class;
Các 'DoSomething' tên phương pháp ngày thứ hai trong số này được đánh dấu, và lỗi là
Loại 'ISomeStuff' đã định nghĩa một thành viên được gọi là 'DoSomething' với cùng các loại thông số.
Tôi ngạc nhiên bởi điều này vì tôi đã xác định rõ ràng các tham số có loại khác nhau: một là một lớp và một cấu trúc khác.
Tại sao điều này không đủ để làm cho chữ ký khác biệt?
Bản sao có thể có của [Ràng buộc chung, trong đó T: struct và trong đó T: class] (http://stackoverflow.com/questions/2974519/generic-constraints-where-t-struct-and-where- t-class). Xem thêm bài viết của Eric Lippert [ở đây] (http://blogs.msdn.com/b/ericlippert/archive/2009/12/10/constraints-are-not-part-of-the-signature.aspx). –
@Frederic: Làm thế nào tôi bỏ lỡ cái đó !!! –
Dường như ngăn "Liên quan" trong thanh bên cũng không chọn nó, vì vậy nó có thể phức tạp hơn bình thường;) –