gpt4 book ai didi

c# - 是否可以在 C# 中定义内部类型的 protected 属性?

转载 作者:行者123 更新时间:2023-12-05 01:22:47 24 4
gpt4 key购买 nike

我希望 InternalClassinternal(在程序集外不可访问)

我还想定义一个 InternalClass 类型的 protected 属性(在同一个程序集中)

这是我的:

internal class InternalClass 
{
}

现在我想在另一个类中使用这个类型,但是它必须被保护:

public class MyClass
{
protected internal InternalClass IC { get; }
}

上面的代码给我以下错误:

Inconsistent accessibility: property type 'InternalClass' is lessaccessible than property 'MyClass.IC'

当我检查 documentation ,我可以看到 protected internal 是一个有效的修饰符,但我不确定如何使用它?

最佳答案

问题是,MyClass 是公共(public)的,这意味着外部类(另一个程序集中的一个)可以派生它,然后可以通过protected internal 访问内部类> 属性(property)。这是因为 protected internalprotectedinternal。来自MS docs :

A protected internal member is accessible from the current assembly or from types that are derived from the containing class.

(强调我的)

如果你想保持 MyClass 公开,那么你需要使 InternalClass 不是内部的,或者使属性 IC 不是通过将 IC 设置为 private protected 可以从外部访问。来自 MS 文档:

A private protected member is accessible by types derived from the containing class, but only within its containing assembly

(强调我的)

这似乎是您想要的。

关于c# - 是否可以在 C# 中定义内部类型的 protected 属性?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/73453737/

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