我想在命名空间中密封类。 我正在查看“内部”访问修饰符,但这似乎只是在程序集中的类的封印。 我可以在命名空间中封装类吗?

或者我必须将东西移动到单独的组件中? 但后来我会遇到视觉工作室拒绝循环装配参考的问题。

#1楼 票数:3

不,没有特定于命名空间的修饰符。 一种选择是使用继承和“受保护”修饰符,但在基类上有一个内部构造函数,以便外部代码不能对其进行子类化。 这可能有所帮助。

#2楼 票数:2

使用C#是不可能的。

命名空间级别的成员只能是public成员或internal

但是,您可以在C#中使用嵌套类

namespace A {
    public class B {

        protected class C { }
    }

    public class D {

        void E() {
            var F = new A.B();    // ok!
            var G = new A.B.C();  // error!
        }
    }
}

#3楼 票数:0

您仍然可以使用internal关键字,并通过AssemblyInfo.cs文件中的InternalsVisibleTo属性将内部类公开给另一个程序集。

  ask by translate from so

未解决问题?本站智能推荐:

2回复

C# 内部访问修饰符

我想知道是否有人能想到以下适用的场景。 所以我知道内部意味着只有同一程序集中的类才能访问,但在上述情况下这不适用,因为类 B 是私有的。 我只是好奇这个场景是否有用例。 通过用例,我的意思是有没有时间在私有类内部使用访问修饰符。
1回复

访问修饰符C# - 内部修饰符

从MSDN,内部:访问被限制在当前装配。 所以,如果我有单个项目winform1,将使用内部修饰符意味着访问我的项目中的任何类? 我的意思是在一个项目中,当前项目上下文和当前程序集是否相同?
5回复

访问修饰符C#

我有一个Card类,它具有一些可从外部API获取其值的属性: 因此,这就像我的大师班,包括武器,法术和奴才一样。 (当然,实际的类有更多的成员。) 然后我有一个从Card继承的Minion类( Minion : Card ) 我面临的问题是,显然我可以从Minion访问这些
1回复

C#中的访问修饰符

我正在教自己C#,我遇到了一些模棱两可的情况。 我正在尝试做的是为一些数据创建一个容器类,相当直接,但我试图尊重封装,并且只能通过setter和getter访问数据。 所以我正在阅读有关访问修饰符的内容,根据此MSDN文章 ,默认访问级别为内部。 我来自Java-land所以我不熟悉内
2回复

内部访问修饰符

我在这样的项目中有2个类: 和 我已经为A类及其数据成员使用了内部访问修饰符 虽然可以在类b的主要内部创建类A的对象,但为什么我无法使用同一程序集中的内部访问说明符访问其数据成员? 这是它在VS 2010中给出的错误: 由于其保护级别,“ConsoleApp
3回复

C#中的私有访问修饰符和公共访问修饰符之间的区别?

我了解如果要使用私有访问修饰符,例如: 然后,这意味着实例变量标题仅可从上述示例中的类(即Book类)内部访问。 但是,如果我要使实例变量成为public ,则我已经读到这使得类外部可以访问它。 我的问题是,这是否也意味着它可以在名称空间之外访问? 还是我们还在谈论命名空间
1回复

如何在C#中从外部程序集访问“内部”修饰符类属性

首先,我要说我已经看到了解决该问题的一种方法,但是我发现这主要用于测试目的。 谁能给我一个好的实践方法,从C#的外部程序集中调用内部类的内部静态属性? 如果有人可以在C#中给我一个小例子,我将不胜感激。 我知道使用“ AssemblyVisibleTo”,但有人告诉我这不是编码的好
2回复

在内部访问修饰符的上下文中,C#中的汇编是什么?

我以为程序集是Visual Studio解决方案中的一个项目,但是后来我试图了解继承和内部/受保护的访问修饰符,我迷路了。 * Project1和Project2在一个解决方案中是独立的VS项目: 在Project2我没有继承关系,因此字段field1和field2均不可访问,