C# 抽象类成员无法访问,因为它';s保护级别
如何访问abtsract类的受保护成员?假设我有如下定义的类C# 抽象类成员无法访问,因为它';s保护级别,c#,oop,C#,Oop,如何访问abtsract类的受保护成员?假设我有如下定义的类 public abstract class BaseClass { private int index ; protected int GetIndex { get { return index ;} set { index = value; } } } public class MyClass : BaseClass { ... } public cla
public abstract class BaseClass
{
private int index ;
protected int GetIndex
{
get { return index ;}
set { index = value; }
}
}
public class MyClass : BaseClass
{
...
}
public class TestClass
{
var data = new MyClass()
var index = data.GetIndex;
}
线路
var index = data.GetIndex;
投诉由于其保护级别而无法访问。如何在TestClass中访问MyClass的GetIndex属性
-Alan-您的问题正是受保护的的用途 它保护字段/方法不被基类或子类的外部使用。TestClass不是从基类或MyClass派生的;而且你不能访问GetIndex。就这么简单 因此,您的选择空间是:
该列表中没有具体的顺序;但很明显,选项3是这里“最差”的选择。您的问题正是受保护的的用途 它保护字段/方法不被基类或子类的外部使用。TestClass不是从基类或MyClass派生的;而且你不能访问GetIndex。就这么简单 因此,您的选择空间是:
public abstract class BaseClass
{
public int GetIndex { get; private set; }
public BaseClass() { GetIndex = 0; }
}
然后,您可以仅在基类中设置GetIndex(您的可验证索引是私有的),或者:
使用以下命令:
public abstract class BaseClass
{
public int GetIndex { get; private set; }
public BaseClass() { GetIndex = 0; }
}
然后,您可以仅在基类中设置GetIndex(您的可验证索引是私有的),或者:
公开、内部或使用反射?这不是受保护标识符的重要用途。您可以将其公开或内部..为什么希望受保护的成员可以在类/派生类的成员之外访问?非常不清楚您试图实现什么。注意:属性不应包含文本
Get
或Set
。如果属性表示索引,那么您应该这样命名int index{get;set;}
将其公开或内部或使用反射?这不是受保护标识符的重要用法。您可以将其公开或内部..为什么希望受保护的成员可以在类/派生类的成员之外访问?非常不清楚您试图实现什么。注意:属性不应包含文本Get
或Set
。如果属性表示一个索引,那么您应该这样命名intindex{get;set;}
,如果它是某个单元测试目录中的一个特定测试类。。。也许吧,如果它是某个单元测试目录中的一个特定测试类。。。大概