Mic*_*ows 14
语言本身没有任何使这很容易的东西,但你应该能够通过使你的构造函数内部来做到这一点.但是,如果这样做,您将无法从外部程序集中新建它,因此您必须添加工厂方法.
public class Foo
{
internal Foo()
{
}
public Foo Create()
{
return new Foo();
}
}
Run Code Online (Sandbox Code Playgroud)
这是一个替代方案,可以让您在外部程序集中新建类
public sealed class Foo : FooBase
{
}
public class FooBase
{
internal FooBase() { }
}
Run Code Online (Sandbox Code Playgroud)
但是,您可能会问自己的一个问题就是您希望密封课程的原因.有时这是不可避免的,但我已经看到sealed关键词经常被滥用,以至于我认为我会提起它.通常,开发人员会密封类,因为它们对代码过度保护. 大多数情况下,如果一个类设计得很好,就不需要密封.
如果你的类是抽象的,那么有一个非常简单的方法:
public abstract class Foo {
internal abstract void DoNothing();
// ... other members
}
Run Code Online (Sandbox Code Playgroud)
现在,尽管您的类和大多数成员都是公共的,但内部抽象成员使得无法从程序集外部的类派生.
| 归档时间: |
|
| 查看次数: |
2124 次 |
| 最近记录: |