![](/img/trans.png)
[英]Can i access static property of base class, using object of derived class?
[英]How do I prevent set access to a static property in the derived class?
public abstract class ExeCommand
{
private static object commandHandler;
public static object CommandHandler
{
get { return commandHandler; }
set { commandHandler = value; }
}
}
class ServerCommand : ExeCommand
{
}
這就是它的基本內容。 我想允許
ExeCommand.CommandHandler = myCommandHandler
但不是
ServerCommand.CommandHandler = myCommandHandler
有什么辦法可以強制執行嗎?
兩者是同一回事。 它們編譯為相同的代碼。
您試圖做的事毫無意義。
抱歉,直白了。
使用new
class ServerCommand : ExeCommand
{
public new static object CommandHandler
{
get { return ExeCommand.CommandHandler; }
}
}
這不能完全解決問題,因為您仍然可以強制轉換為允許修改的ExeCommand。
更新:正如其他人指出的那樣, base
在靜態方法中無效。 已更正。
目前尚不清楚您要在這里實現什么。
如Cory所指出的,您可以通過聲明相同的屬性但隱藏setter來防止ServerCommand.CommandHandler
可寫,但是為什么呢? 調用方始終可以僅使用ExeCommand.CommandHandler
來分配值。 ServerCommand共享其基類中的靜態成員。
也許如果您能解釋您試圖實現更好的設計的想法,那么可能會被提出。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.