受保护字段中的 C# 内部类型
C# internal types in protected fields
我正在尝试编写一个 class 库,如下所示:
namespace Test
{
class Field
{
}
public abstract class SomeClass
{
protected Field field; //Inconsistent accessibility: field type 'Field' is less accessible than field 'SomeClass.field'
}
public class SomeDerivedClass1:SomeClass
{
}
public class SomeDerivedClass2:SomeClass
{
}
}
规则:
- 我不想让
Field
成为 SomeClass
的受保护子 class,因为它被其他 classes; 使用
- 我不想让
Field
在 Test
命名空间之外可见,因为它破坏了封装;
- 我需要继承,因为
SomeDerivedClass1
和 SomeDerivedClass2
共享很多代码。
在不违反任何这些规则的情况下,是否有解决此问题的方法?
可以使用new private protected
modifier。这相当于 internal
AND protected
.
Not to be confused with protected internal
which is protected
OR internal
public abstract class SomeClass
{
private protected Field field;
}
尽管在命名空间外的同一个程序集中仍然可见。
我正在尝试编写一个 class 库,如下所示:
namespace Test
{
class Field
{
}
public abstract class SomeClass
{
protected Field field; //Inconsistent accessibility: field type 'Field' is less accessible than field 'SomeClass.field'
}
public class SomeDerivedClass1:SomeClass
{
}
public class SomeDerivedClass2:SomeClass
{
}
}
规则:
- 我不想让
Field
成为SomeClass
的受保护子 class,因为它被其他 classes; 使用
- 我不想让
Field
在Test
命名空间之外可见,因为它破坏了封装; - 我需要继承,因为
SomeDerivedClass1
和SomeDerivedClass2
共享很多代码。
在不违反任何这些规则的情况下,是否有解决此问题的方法?
可以使用new private protected
modifier。这相当于 internal
AND protected
.
Not to be confused with
protected internal
which isprotected
ORinternal
public abstract class SomeClass
{
private protected Field field;
}
尽管在命名空间外的同一个程序集中仍然可见。