OK, tiêu đề đó có một chút không rõ ràng, nhưng tôi không thể nghĩ ra một cách tốt hơn để đặt nó, ngoài việc giải thích nó ...Có thể phát hiện ngữ cảnh lớp trong một phương thức tĩnh được kế thừa không?
Giả sử tôi có một lớp Animal
, với phương pháp tĩnh, chung:
public static T Create<T>() where T : Animal {
// stuff to create, initialize and return an animal of type T
}
Và tôi có các lớp con Dog
, Cat
, Hamster
vv để có được một Dog
, tôi có thể viết:
Dog d = Animal.Create<Dog>();
o r
Dog d = Dog.Create<Dog>();
thực sự giống nhau. Nhưng có vẻ hơi ngớ ngẩn khi phải viết Dog
rất nhiều lần, vì tôi đã gọi phương thức tĩnh thông qua lớp con Dog
.
Bạn có thể nghĩ ra cách nào thông minh viết một phương pháp Create()
trong lớp cơ sở để tôi có thể gọi
Dog d = Dog.Create();
Cat c = Cat.Create();
Hamster h = Hamster.Create();
mà không cần viết một phương pháp Create()
trong mỗi lớp con?
Có thể bạn sẽ muốn hạn chế 'T' đối với Động vật:' lớp Động vật trong đó T: Động vật ' –
dtb
@dtb: Chắc chắn! Đã cập nhật phản hồi, cảm ơn. –
Mã bên trong Create() sẽ gọi các phương thức ảo/trừu tượng, đó là cách nó sẽ tạo ra các thể hiện của các kiểu có nguồn gốc. –