Tôi đang sử dụng mã bên dưới. Nó được thiết kế cho một loại nhất định để hạn chế nó popup-Ness trong IntelliSense, vvPhương pháp mở rộng cho hai loại chính xác khác nhau
public static Generic Get<Generic>(this Entity input)
{
return (Generic)input;
}
Bây giờ tôi muốn sử dụng cùng một Nhận phương pháp cho loại hình khác (hoặc, để được bảo hiểm đầy đủ, một vài khác các loại nhưng vẫn là số sửa lỗi). Vì vậy, tôi đã thêm một phương thức thứ hai và mã trông như sau.
public static Generic Get<Generic>(this Entity input)
{
return (Generic)input;
}
public static Generic Get<Generic>(this Entity2 input)
{
return (Generic)input;
}
Tôi cho rằng cách tiếp cận tốt hơn là giữ nó trong cùng một thân phương pháp và vẫn bao gồm tất cả các loại được đánh giá. Có cú pháp để bao gồm ví dụ: hai loại khác nhau trong chữ ký? Một cái gì đó như thế này pseudo-code dưới đây.
public static Generic Get<Generic>(this [Entity, Entity2] input)
{
return (Generic)input;
}
Cách tiếp cận tốt nhất tôi có thể nghĩ, như được hiển thị bên dưới, bao gồm phương pháp nhập cho từng loại và logic ở nơi riêng tư. Nó có ý nghĩa khi logic là rộng rãi nhưng trông loại thừa khi nó chỉ là một hoặc hai dòng.
public static Generic Get<Generic>(this Entity input)
{
return CommonLogic(input);
}
public static Generic Get<Generic>(this Entity2 input)
{
return CommonLogic(input);
}
private static Generic CommonLogic(Object input)
{
return (Generic)input;
}
Tôi sẽ đi với cách tiếp cận cuối cùng chắc chắn, hoặc đặt nó trên đối tượng? –
có bất kỳ điểm chung nào giữa 'Entity' và' Entity2' không? –
Bạn có kiểm soát nguồn của các lớp EntityX không? Nếu có, bạn có thể tạo một giao diện điểm đánh dấu (trống) và chỉ có các lớp đó thực hiện giao diện. Sau đó có loại tham số phương thức mở rộng 'này' của giao diện đó. – user469104