Tôi muốn làm như sauThiết kế lớp C# - tôi có thể sử dụng gì thay vì "tóm tắt tĩnh"? không
public abstract class MyAbstractClass
{
public static abstract int MagicId
{
get;
}
public static void DoSomeMagic()
{
// Need to get the MagicId value defined in the concrete implementation
}
}
public class MyConcreteClass : MyAbstractClass
{
public static override int MagicId
{
get { return 123; }
}
}
Tuy nhiên tôi có thể vì bạn can't have static abstract members.
Tôi hiểu tại sao tôi không thể làm điều này - bất kỳ đề xuất nào cho một thiết kế sẽ đạt được nhiều kết quả tương tự?
(Để rõ ràng - Tôi cố gắng để cung cấp một thư viện với một lớp cơ sở trừu tượng nhưng các phiên bản bê tông PHẢI thực hiện một thuộc tính vài/phương pháp bản thân và có, có những lý do tốt để giữ cho nó tĩnh.)
Tôi tự hỏi "lý do chính đáng" là gì - vì chúng có thể ảnh hưởng đến cách tốt nhất để tiếp tục từ đây. –
Bạn có thể chia sẻ các lý do * tốt * để có thuộc tính này 'tĩnh' để chúng tôi có thể hiểu rõ hơn về kịch bản của bạn và đề xuất các giải pháp. Ngay bây giờ nó không rõ ràng những gì bạn đang cố gắng để đạt được. –
Nó thực sự phụ thuộc vào những gì bạn đang cố gắng làm. – bitbonk