and*_*ert 7 c# oop inheritance protected
考虑以下类:
public class Vehicle { ... }
public class Coverage { ... }
public class VehicleList : IEnumerable<Vehicle> { ... }
public class CoverageList : IEnumerable<Coverage> { ... }
public abstract class Quote
{
protected VehicleList vehicles;
protected CoverageList coverages;
internal Quote() { ... }
public IReadOnlyCollection<Vehicle> Vehicles
{
get { return this.vehicles.AsReadOnly(); }
}
public IReadOnlyCollection<Coverage> Coverages
{
get { return this.coverages.AsReadOnly(); }
}
...
}
public sealed class OhQuote : Quote
{
//needs to access protected fields
...
}
public sealed class InQuote : Quote { ... }
public sealed class MiQuote : Quote { ... }
Run Code Online (Sandbox Code Playgroud)
Quote完全包裹两者的功能VehicleList和CoverageList所以我想这些类标记为internal.问题是它们是类的protected字段类型public.如果我将那些字段标记为protected internal那么它们就是protectedOR internal.我真正需要的是他们是protected和internal(protected在集会中优先考虑).您可以看到,无论是Quote(具有internal构造函数)还是其子类(都是sealed)都可以扩展到程序集之外.我已经想出如何使用公共接口实现所需的功能,但希望确保没有更简洁的方法.