Tôi đang làm việc trên một công cụ có thể được cấu hình bởi người dùng (không phải người dùng cuối, người dùng thư viện) để sử dụng các thành phần khác nhau. Ví dụ: Ví dụ: giả sử lớp Drawer
phải có ITool
, Pencil
hoặc Brush
và IPattern
, Plain
hoặc Mosaic
. Ngoài ra, chúng ta hãy nói một Brush
phải có một IMaterial
của một trong hai Copper
hoặc Wood
Sử dụng Generics trong Class
Hãy nói rằng ảnh hưởng của việc lựa chọn Pencil
hoặc Brush
thực sự quyết liệt khác nhau, và cùng đi cho các loại IPattern
. nó sẽ là một ý tưởng tồi để mã lớp Drawer
với các khái niệm chung như thế này:
public class Drawer<Tool, Pattern> where Tool: ITool where Pattern : IPattern { ... }
public class Brush<Material> where Material : IMaterial { ... }
Một sau đó có thể sử dụng lớp như:
Drawer<Pencil, Mosaic> FirstDrawer = new Drawer<Pencil, Mosaic>();
Drawer<Brush<Copper>, Mosaic> SecondDrawer = new Drawer<Brush<Copper>, Mosaic>();
Tôi chủ yếu sử dụng chung cho các bộ sưu tập và như vậy và nơi trú ẩn' t thực sự thấy generics được sử dụng cho rằng loại điều. Tôi có nên không?
Cảm ơn, phần về "trừ khi động cơ bạn đang tạo có phương pháp với đối số hoặc trả về các loại loại generic "thực sự đã giúp tôi nhận ra rằng nó sẽ vô ích đến mức nào khi sử dụng Generics trong trường hợp đó! Chắc chắn nó sẽ làm việc bằng cách sử dụng Generics, nhưng nó sẽ được sử dụng Generics chỉ để sử dụng Generics :-P – Tipx