C# 修饰符是否只允许从基类执行?
如果我有这样一门课:C# 修饰符是否只允许从基类执行?,c#,C#,如果我有这样一门课: public abstract class ActionBase { public abstract bool RunRemote(); public abstract void RunLocal(); public void Run() { if (RunRemote()) { var connection = new SQLiteConnection("Data Source=Dat
public abstract class ActionBase
{
public abstract bool RunRemote();
public abstract void RunLocal();
public void Run()
{
if (RunRemote())
{
var connection = new SQLiteConnection("Data Source=Data.db;Version=3;");
connection.Open();
var cmd = new SQLiteCommand("UPDATE Actions SET Complete = 1 WHERE Id = @Id", connection);
cmd.Parameters.Add(new SQLiteParameter("@Id", Id));
cmd.ExecuteNonQuery();
cmd.Dispose();
connection.Dispose();
}
RunLocal();
}
}
我只想将Run()公开为public,但抽象和虚拟不能标记为private。是否有一种干净的方法(例如不使用代表等)
谢谢
乔你想要
保护
。这将允许基类或派生类访问这些方法
protected abstract bool RunRemote();
protected abstract void RunLocal();
您需要
保护
。这将允许基类或派生类访问这些方法
protected abstract bool RunRemote();
protected abstract void RunLocal();
或者什么的
或者其他什么。访问者模式如何?您是只允许基类的对象调用Run()方法,还是只希望实现
Run()的基类
被允许。这正是受保护的
的目的。访问者模式如何?您是只允许基类的对象调用Run()方法,还是只允许运行()
的基类实现。这正是受保护的
的目的。