Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/xpath/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 修饰符是否只允许从基类执行?_C# - Fatal编程技术网

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()方法,还是只允许
运行()
的基类实现。这正是
受保护的
的目的。