我有一个包含2个公共类的类库,它们继承自抽象类.在抽象类上,我有一个受保护的字段,只能由继承的类访问.用于该字段的类型是内部类的类型.
例如,我有:
internal class MyInternalClass
{
...
}
public abstract class MyAbstractClass
{
protected MyInternalClass myField;
}
Run Code Online (Sandbox Code Playgroud)
现在我明白这不会起作用,因为如果派生自MyAbstract类的其中一个类扩展到程序集之外,那么访问myField将是非法的.
我的问题是如何在保持MyInternalClass内部(它不应该在程序集外部可访问)并允许程序集中的类扩展MyAbstractClass以访问myField的情况下使事情正常工作?
创建一个MyAbstractClass需要和MyInternalClass实现的公共接口.
这样的东西,所以你可以MyInternalClass默认它,但如果你需要(例如,模拟)注入新的行为:
internal class MyInternalClass : IMyInterface
{
}
public interface IMyInterface
{
}
public abstract class MyAbstractClass
{
protected IMyInterface myField;
protected MyAbstractClass(IMyInterface required = null)
{
myField = required ?? new MyInternalClass();
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
574 次 |
| 最近记录: |