我已經搜索了類似錯誤的答案,但一直未能找到任何答案。另外我知道如何解決這個錯誤(讓所有的公衆 - 我不想這麼做),但我不明白爲什麼這是不允許的。 反正 - 我越來越不一致的可訪問性不易訪問
可訪問性不一致:屬性類型 '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