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

Posted

技术标签:

【中文标题】C#更改嵌套类的方法修饰符【英文标题】:C# Change Method Modifier of nested Class 【发布时间】:2019-12-04 18:25:21 【问题描述】:

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

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# 中做到这一点??? 谢谢!

【问题讨论】:

你说得对,我也可以在Class之外定义类Person。 【参考方案1】:

您可以为此使用接口:

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#更改嵌套类的方法修饰符的主要内容,如果未能解决你的问题,请参考以下文章

kotlin学习之类的修饰符与抽象类,嵌套类,内部类,匿名内部类

Kotlin基础-可见修饰符嵌套类

C#类详解

Java中私有静态嵌套类中的访问修饰符

类的声明和访问级别

Scala访问修饰符