我一直在寻找使用的功能ScriptHeader从类Microsoft.SqlServer.Management.Smo.StoredProcedure。我找到了怎么做(希望在那里有一个命名空间文件夹)。但我只是想知道为什么在类似的类中定义枚举的原因。这样做有什么好处?
Server ServerConnect = new Server(new ServerConnection("database"));
StoredProcedure proc = ServerConnect.Databases["myDB"].StoredProcedures[0];
string header = proc.ScriptHeader(ScriptNameObjectBase.ScriptHeaderType.ScriptHeaderForCreateOrAlter);
Run Code Online (Sandbox Code Playgroud)
类定义是:
namespace Microsoft.SqlServer.Management.Smo {
public class ScriptNameObjectBase : NamedSmoObject
{
protected internal ScriptNameObjectBase();
public enum ScriptHeaderType
{
ScriptHeaderForAlter = 0,
ScriptHeaderForCreate = 1,
ScriptHeaderForCreateOrAlter = 2
}
}
}
Run Code Online (Sandbox Code Playgroud)
我只是想知道为什么在这样的类中定义枚举的原因。这样做有什么好处?
据我所知,这种选择没有特别引人注目的优势或劣势。而且,这是一个不寻常的选择。
Microsoft 的框架设计指南不鼓励基类库提供者以这种方式嵌套公共类型,因为这可能会造成混淆。
此选择向使用此类的开发人员强调枚举类型与包含类的操作密切相关,并且仅与该类的操作相关联。也就是说,它强调“不要将这个枚举用于你自己的目的;它实际上是外部类的一个实现细节”。
我不清楚为什么这门课的作者——显然在微软工作——在这种情况下没有遵循微软的指导方针。我想你必须问他们肯定知道。
通常将一种类型嵌套在另一种类型中的原因是使内部类型成为外部类型的实际实现细节。也就是说,将内部类型隐藏在外部类中,以避免使用开发人员永远不应该使用的类型“污染”外部类的命名空间。但在这些情况下,您会将内部类型标记为内部、受保护或私有。
| 归档时间: |
|
| 查看次数: |
217 次 |
| 最近记录: |