C#访问具有继承的修饰符

Kel*_*ron 4 c# inheritance access-modifiers

我想在属性上有一个具有不同访问修饰符的对象的多个版本

例如,我可能有一个用户类 -

public abstract class UserInfo
{
    internal UserInfo()
    {
    }
    public virtual int ID { get; set; }
    public virtual string Password { internal get; set; }
    public virtual string Username { get; set; }
}

public class ReadUserInfo : UserInfo 
{
    internal ReadUserInfo()
    {
    }
    override public int ID { get; internal set; }
    override internal string Password { get; set; }
    override public string Username { get; internal set; }
}

public class NewUserInfo : UserInfo
{
    internal NewUserInfo()
    {
        ID = -1;
    }
     //You get the Idea
}
Run Code Online (Sandbox Code Playgroud)

这是我可以实现的,还是我必须以更加程序化的方式控制访问?

Nad*_*zie 14

遗产真的适合这里吗?UserInfo该类的用户不需要知道子类型.在这种情况下,Password当给定ReadUserInfo实例而不是UserInfo实例时,用户需要知道该属性在某种程度上不可用.

这真的没有意义.

编辑:在OO设计中,这被称为Liskov替换原则