Nếu BaseFruit
có một hàm tạo chấp nhận một int weight
, tôi có thể khởi tạo một miếng trái cây theo phương pháp chung như thế này không?
public void AddFruit<T>()where T: BaseFruit{
BaseFruit fruit = new T(weight); /*new Apple(150);*/
fruit.Enlist(fruitManager);
}
Một ví dụ được thêm vào đằng sau ý kiến. Có vẻ như tôi chỉ có thể làm điều này nếu tôi đưa ra BaseFruit
một hàm tạo không tham số và sau đó điền vào mọi thứ thông qua các biến thành viên. Trong mã thực sự của tôi (không phải về trái cây), điều này là không thực tế.
-Cập nhật-
Vì vậy, có vẻ như nó không thể được giải quyết bằng các ràng buộc theo bất kỳ cách nào sau đó. Từ các câu trả lời, có ba giải pháp ứng cử viên:
- Mô hình nhà máy
- Suy tư
- Kích hoạt
Tôi có xu hướng nghĩ rằng sự phản chiếu là ít sạch nhất, nhưng tôi không thể quyết định giữa hai cái kia.