如果我有这样的课程:
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,但是abstract和virtual不能标记为private。是否有一种干净的方式(例如,不使用代表等)。
谢谢,
乔
答案 0 :(得分:6)
你想要protected
。这将允许基类或派生类访问方法。
protected abstract bool RunRemote();
protected abstract void RunLocal();
答案 1 :(得分:2)
public abstract class ActionBase
{
protected abstract bool RunRemote();
protected abstract void RunLocal();
public void Run()
{
if (RunRemote())
{
// ....
}
RunLocal();
}
}
或其他什么。