单个基类的不同派生类访问修饰符

时间:2012-11-15 12:07:14

标签: c# inheritance properties hierarchy access-modifiers

我不想在必要时编写相同的代码。

应该有一个基类(我认为接口不合适)

public class MyUser
{
    public string Username
    {
        get;
        set;
    }
    //...many other fields
}

在其中一个派生类中,需要PRIVATE set修饰符(也称为此类'方法)。

public class MyPrivateInfo : MyUser//, IMyUser
{
    public string Username
    {
        get;
        private set;
    }
}

在另一个类中,需要INTERNAL修饰符(也称为库范围)。

public class MyLibInfo : MyUser//, IMyUser
{
    public string Username
    {
        get;
        internal set;
    }
    //...many other fields
}

我认为有一种方法可以创建一个MyUser类型的字段,但这不是目标。字段应该可以在每个类中直接访问。

实现这一目标的最佳方式是什么?没有一种方法?

1 个答案:

答案 0 :(得分:2)

首先,您可以使用接口。您只需要不指定set方法。

这将允许您定义所需的set的任何辅助功能。

public interface IUser
{
    string Username { get; }
}

public class MyPrivateInfo : IUser
{
    public string Username
    {
        get;
        private set;
    }
}

public class MyLibInfo : IUser
{
    public string Username
    {
        get;
        internal set;
    }
}