C#继承公共类后无法访问父类成员的问题求助
问题分析与解决:无法访问父类成员的保护级别问题
问题出在父类字段的默认访问修饰符上:
在C#中,类的成员(字段、方法等)如果没有显式声明访问修饰符,默认是private(私有)。私有成员仅能在定义它的类内部访问,子类无法继承或直接调用——哪怕父类本身是public的也不行。你的Appstrings类里的wrongUserName字段就是默认的私有级别,所以子类AppEngine无法访问。
解决方案(三种常用方式)
改为protected修饰符(推荐用于仅子类访问的场景)
修改Appstrings类的字段定义,将默认私有改为protected,这样子类可以访问,外部类则无法直接调用:public class Appstrings { protected string wrongUserName = "Wrong username. Please check and try again.."; }改为internal修饰符(适合同命名空间内类共享的场景)
如果需要同命名空间下的其他类也能访问该字段,可以用internal:public class Appstrings { internal string wrongUserName = "Wrong username. Please check and try again.."; }改为public属性封装(适用于需要外部访问的场景,符合C#编码规范)
直接暴露字段不是最佳实践,推荐用只读属性封装,既保证外部可以访问,又能控制字段的修改逻辑:public class Appstrings { public string WrongUserName { get; } = "Wrong username. Please check and try again.."; }子类调用时对应修改为属性名(遵循C#大驼峰命名规范):
public async Task<string> Testing() { return WrongUserName; }
内容的提问来源于stack exchange,提问作者Elfo
相关产品推荐
相关产品推荐

