我已经搜索了类似错误的答案,但一直未能找到任何答案。另外我知道如何解决这个错误(让所有的公众 - 我不想这么做),但我不明白为什么这是不允许的。 反正 - 我越来越不一致的可访问性不易访问
可访问性不一致:属性类型 'E7XLibrary.Base.MultiSegmentBase' 比财产较少访问 'E7XLibrary.E7XGroupBase.GroupSegment'
我MultiSegmentBase类被声明作为内部类(以及SegmentBase类):
internal class MultiSegmentBase : SegmentBase
我使用MultiSegmentBase实例作为受保护的抽象p roperty在我的公开E7XGroupBase类:
public abstract class E7XGroupBase
{
internal abstract UInt64 Length { get; }
protected abstract MultiSegmentBase GroupSegment { get; }
internal virtual void Wrap(BinaryWriter writer)
{
GroupSegment.Length = this.Length;
GroupSegment.Wrap(writer);
}
}
而且最后我有一个devided公共类E7XSessionGroup类实现抽象E7XGroupBase,这样
public class E7XSessionGroup : E7XGroupBase
{
#region Properties
private SessionGroupSegment _groupSegment = null;
protected override MultiSegmentBase GroupSegment
{
get
{
if (_groupSegment == null)
_groupSegment = new SessionGroupSegment();
return _groupSegment;
}
}
正如我所说的,我知道,如果我只是申报MultiSegmentBase作为一个公共类而不是内部的,我不会有这个错误,但是因为我正在创建一个API,所以我不想公开MultiSegmentBase,然后再扩展所有从MultiSegmentBase派生的类。
基本上,我的问题是为什么MultiSegmentBase需要像E7XGroupBase和E7XSessionGroup一样可访问,当时我只在受保护的属性中使用MultiSegmentBase?你们有没有一个好的解决方法?
但当然 - “但扩展类无法解决MultiSegmentBase”没有想到这一点。非常感谢@Trevor Pilley – Viking