C# 更改嵌套类的方法修饰符

标签 c# nested modifier

我想知道这是否可行: 我有课

class Class
{

    private Person person = new Person();
    public void NamePerson()
    {
        person.Name = "Peter";
    }

    public Person CPerson
    {
        get
        {
            return person;
        }
    }

    public class Person
    {
        public string Name { set; get; }
    }
}

Class内部我想拥有对person对象的完全访问权限。 但在 Class 之外拥有 Person 的写入权限

 Class a = new Class();
 a.CPerson.Name = "Steve"; !!!!!

应该是无效的。我只想拥有读取权限。

string name = a.CPerson.Name;

有没有办法在 C# 中做到这一点??? 谢谢!

最佳答案

您可以使用一个接口(interface)来实现:

public interface IPerson
{
    string Name { get; }
}

public class Person : IPerson
{
    public string Name { get; set; }
}

现在在类中,您将对象引用为 Person,但仅返回 IPerson 的实例:

class Class
{
    private Person person = new Person();
    public void NamePerson()
    {
        person.Name = "Peter";
    }

    public IPerson CPerson
    {
        get
        {
            return person;
        }
    }    
}

关于C# 更改嵌套类的方法修饰符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59182545/

相关文章:

C#:有什么理由不应该声明事件支持字段 protected ?

c# - 通过 XPath 选择属性不区分大小写的节点

c# - ProgressBar 中值为 0 时如何显示 PART_Indicator? WPF

struct - 如何在go中初始化嵌套结构?

java - 克隆并序列化最终对象

C# 如果数组是按引用传递的,为什么参数数组必须用修饰符 ref 传递?

c# - 并行 Linq 查询优化

ruby-on-rails - 在 Rails 项目中不断自动加载的问题(偶尔工作)

asp.net-mvc - for循环中的Asp.net Div标签

javascript - 声明后可以更改 Javascript 函数吗?