Tôi đã đọc qua các bài viết theo SOnguồn gốc lớp gọi phương thức tĩnh của lớp cơ sở trong phương pháp tĩnh của riêng mình
- C#: How do I call a static method of a base class from a static method of a derived class?
- Can I have a base class where each derived class has its own copy of a static property?
- What's the correct alternative to static method inheritance?
Tất cả dường như rất gần câu hỏi của tôi và có câu trả lời hay, nhưng dường như họ không trả lời câu hỏi của tôi ngoài việc nói rằng tôi cần phải làm cho phương thức không tĩnh.
một ví dụ:
abstract public class baseClass
{
private static List<string> attributeNames = new List(new string {"property1","property2"});
// code for property definition and access
virtual public static bool ValidAttribtue(string attributeName)
{
if (attributeNames.Contains(attributeName))
return true;
else
return false;
}
}
class derivedA : baseClass
{
private static List<string> attributeNames = new List(new string {"property3","property4"});
// code for property definition and access
public static override bool ValidAttribute(string attributeName)
{
if (attributeNames.Contains(attributeName))
{
return true;
}
else
{
return base.ValidAttribute(attributeName);
}
}
}
class derivedB : baseClass
{
private static List<string> attributeNames = new List(new string {"property10","property11"});
// code for property definition and access
public static override bool ValidAttribute(string attributeName)
{
if (attributeNames.Contains(attributeName))
{
return true;
}
else
{
return base.ValidAttribute(attributeName);
}
}
}
derivedA sẽ có các tính chất 1,2,3,4 trong khi derivedB sẽ có đặc tính 1,2,10,11. Danh sách các thuộc tính có vẻ là một giá trị cụ thể của lớp và không thể thay đổi tại bất kỳ thời điểm nào. Tôi nghĩ nó sẽ tĩnh.
Thiết kế của tôi sai theo nghĩa là tôi đang cố gắng sử dụng các phương pháp tĩnh khi chúng không được?
Ví dụ trên làm cho tôi nghĩ rằng kế thừa các phương pháp tĩnh là cần thiết, nhưng có vẻ như cố gắng làm điều này là một lỗi thiết kế. Bất cứ ai có thể giúp tôi hiểu những gì là sai với mã hóa hoặc cấu trúc các lớp học theo cách này?
là mã thực tế này? Bạn không thể có các thành viên tĩnh ảo. –
Không, nó chỉ là mã ví dụ về một hoạt động mà tôi đã nghĩ là có thể. –