gpt4 book ai didi

c# - 可访问性不一致

转载 作者:太空宇宙 更新时间:2023-11-03 18:27:52 25 4
gpt4 key购买 nike

我已经搜索过类似错误的答案,但没有找到任何答案。我也知道如何修复错误(公开所有 - 我真的不想这样做),但我真的不明白为什么不允许这样做。不管怎样-我得到了

Inconsistent accessibility: property type 'E7XLibrary.Base.MultiSegmentBase' is less accessible than property 'E7XLibrary.E7XGroupBase.GroupSegment'

我的 MultiSegmentBase 类被声明为内部类(SegmentBase 类也是如此):

internal class MultiSegmentBase : SegmentBase

我在我的公共(public) E7XGroupBase 类中使用 MultiSegmentBase 实例作为 protected 抽象属性:

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);
}
}

最后我有一个实现抽象 E7XGroupBase 的 devided 公共(public)类 E7XSessionGroup 类,如下所示

public class E7XSessionGroup : E7XGroupBase
{
#region Properties
private SessionGroupSegment _groupSegment = null;
protected override MultiSegmentBase GroupSegment
{
get
{
if (_groupSegment == null)
_groupSegment = new SessionGroupSegment();
return _groupSegment;
}
}

正如我所说,我知道如果我只是将 MultiSegmentBase 声明为公共(public)类而不是内部类,我就不会出现此错误,但由于我正在制作一个 API,我不想公开 MultiSegmentBase 然后进一步公开所有派生自 MultiSegmentBase 的类。

基本上,我的问题是当我只在 protected 属性中使用 MultiSegmentBase 时,为什么 MultiSegmentBase 需要像 E7XGroupBase 和 E7XSessionGroup 一样可访问?你们有什么好的解决方法吗?

最佳答案

问题是你有一个public class,它有一个公共(public)属性,它是一个internal class:

public abstract class E7XGroupBase
{
protected abstract MultiSegmentBase GroupSegment { get; }
}

E7XGroupBase 可以由不同程序集中的类扩展(因为它是公共(public)的)但是扩展类无法解析 MultiSegmentBase 类,因为它被定义为内部。

这可能有助于解释:

程序集 1:

public abstract class E7XGroupBase
internal class MultiSegmentBase : SegmentBase

程序集 2:

public class Something : E7XGroupBase
{
// Can't resolve type MultiSegmentBase
}

您需要公开MultiSegmentBase,或者为它创建一个公共(public)接口(interface)并在E7XGroupBase 中使用它:

public interface IMultiSegmentBase { }

internal class MultiSegmentBase : IMultiSegmentBase {}

public abstract class E7XGroupBase
{
protected abstract IMultiSegmentBase GroupSegment { get; }
}

关于c# - 可访问性不一致,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29821720/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com