Nếu không có bất kỳ mã nào trong các lớp con, tôi muốn một lớp trừu tượng có một bản sao khác của một biến tĩnh cho mỗi lớp con. Trong C#Tạo một siêu lớp có một biến tĩnh khác nhau cho mỗi phân lớp trong C#
abstract class ClassA
{
static string theValue;
// just to demonstrate
public string GetValue()
{
return theValue;
}
...
}
class ClassB : ClassA { }
class ClassC : ClassA { }
và (ví dụ):
(new ClassB()).GetValue(); // returns "Banana"
(new ClassC()).GetValue(); // returns "Coconut"
giải pháp hiện tại của tôi là thế này:
abstract class ClassA
{
static Dictionary<Type, string> theValue;
public string GetValue()
{
return theValue[this.GetType()];
}
...
}
Trong khi điều này hoạt động tốt, tôi tự hỏi nếu có một thanh lịch hơn hoặc được xây dựng trong cách làm điều này?
này tương tự như Can I have different copies of a static variable for each different type of inheriting class, nhưng tôi không có kiểm soát đối với các lớp con
Bạn có thể làm điều đó bằng cách hack một 'Dictionary 'và gọi' GetType() ', nhưng nó sẽ rất kinh khủng ... –
Đối với các thành viên tĩnh ảo/trừu tượng đó sẽ tốt đẹp. xem (tìm kiếm "thành viên tĩnh ảo") –
VolkerK
tại sao không chỉ làm cho nó KHÔNG tĩnh? – BlackTigerX