c# - 受保护字段中的 C# 内部类型
问题描述
我正在尝试编写一个类库,如下所示:
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
,因为它被其他类使用; - 我不想在命名空间
Field
之外显示Test
,因为它破坏了封装; - 我需要继承,因为
SomeDerivedClass1
和SomeDerivedClass2
共享很多代码。
在不违反任何这些规则的情况下,是否有解决此问题的方法?
解决方案
您可以使用新的private protected
修饰符。这相当于internal
AND protected
。
不要与
protected internal
哪个是protected
OR混淆internal
public abstract class SomeClass
{
private protected Field field;
}
不过,它在命名空间外的同一个程序集中仍然可见。
推荐阅读
- javascript - 从动态下拉列表中获取选定的值(由 javascript 生成的选项到 ID)
- apache-kafka - 在滚动升级/重启期间,如何检测 kafka 代理何时“完成”?
- nativescript - Nativescript - 卸载框架
- html - 如何匿名从 Swift 中的 URL 获取 HTML 源代码?
- nuxt.js - 错误:更新 nuxt 到 v2.3.4 后的循环依赖
- intellij-idea - 在调试中禁用 PhpStorm 中的 vim 模式
- drools - 是否可以在流口水规则中返回异常?
- angular - 如何使用 *ngFor 和 *ngIf 循环多个 tr
- mysql - 如何在同一日期减去同一列中的两行?
- jenkins - jenkins Nexus 平台插件 3.x 未发生 Nexus 连接