【发布时间】:2015-07-01 12:53:00
【问题描述】:
我已经搜索过类似错误的答案,但没有找到任何答案。我也知道如何修复错误(公开所有内容 - 我真的不想这样做),但我真的不明白为什么不允许这样做。 无论如何 - 我得到了
可访问性不一致:属性类型 'E7XLibrary.Base.MultiSegmentBase' 比属性更难访问 'E7XLibrary.E7XGroupBase.GroupSegment'
我的 MultiSegmentBase 类被声明为内部类(SegmentBase 类也是如此):
internal class MultiSegmentBase : SegmentBase
我在我的公共 E7XGroupBase 类中使用 MultiSegmentBase 实例作为受保护的抽象属性:
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);
}
}
最后我有一个分开的公共类 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 时,为什么 MultiSegmentBase 需要像 E7XGroupBase 和 E7XSessionGroup 一样可访问?你们有什么好的解决方法吗?
【问题讨论】:
标签: c#