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

C#更改嵌套类的方法修饰符,c#,nested,modifier,C#,Nested,Modifier,我想知道这是否可行: 我有一节课 class Class { private Person person = new Person(); public void NamePerson() { person.Name = "Peter"; } public Person CPerson { get { return person; } } p

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

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 a = new Class();
 a.CPerson.Name = "Steve"; !!!!!
应该是无效的。我只想拥有读取权限

string name = a.CPerson.Name;
有没有办法在C#中做到这一点???
谢谢大家!

您可以使用以下接口:

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;
        }
    }    
}

你是对的,我也可以在课堂外定义班级成员。