Nói rằng tôi có các lớp sau:Làm thế nào để biến một thể hiện Động vật thành một cá thể Dog?
class Animal
{
public long Id { get; set; }
public string Name { get; set; }
}
class Dog:Animal
{
public void sniffBum()
{
Console.WriteLine("sniff sniff sniff");
}
}
Nếu tôi có một thể hiện của Animal
, làm thế nào để bỏ nó vào một Dog
? Một cái gì đó như thế này:
Animal a = new Animal();
if (some logic to determine that this animal is a dog)
{
Dog d = (Dog)a;
d.sniffBum();
}
Về cơ bản tôi không thể sử dụng giao diện. Tôi sẽ luôn có một đối tượng Animal
sắp ra khỏi cơ sở dữ liệu của tôi như thế. Dog
không có bất kỳ tham số nào nhiều hơn Animal
, chỉ có các phương thức mới.
Tôi chỉ có thể tạo đối tượng Dog
mới và chuyển các giá trị trên, (hoặc có một hàm tạo có loại Animal
), nhưng điều này có vẻ lộn xộn.
nếu tất cả các đối tượng là từ loại 'động vật 'bạn cần phải lưu Loại cũng trong cơ sở dữ liệu của bạn theo cách nào đó – WiiMaxx
Có một hàm tạo có một tham số kiểu' Động vật' không phải là lộn xộn ở tất cả IMO – Kamyar
là biến thể 'Animal'class của bạn? – WiiMaxx