我正在开发一个遵循3层体系结构并且其数据访问层(DAL)由其他人编写的项目。我检查了代码,发现他使用两个类库和数据访问层(DAL)中的一个接口连接到数据库。界面是IDBManager和类库是DBManagerFactory和DBManager。在项目中声明命名空间外的枚举
在类DBManagerFactory,他宣称这样一个枚举的DataProvider:
using System;
using System.Data;
using System.Data.Odbc;
using System.Data.SqlClient;
using System.Data.OleDb;
public enum DataProvider
{
Oracle, SqlServer, OleDb, Odbc
}
namespace DataAccessLayer
{
public sealed class DBManagerFactory
{
private DBManagerFactory() { }
和接口IDBManager,他用这样的枚举:
using System;
using System.Data;
using System.Data.Odbc;
using System.Data.SqlClient;
using System.Data.OleDb;
namespace DataAccessLayer
{
public interface IDBManager
{
DataProvider ProviderType
{
get;
set;
}
string ConnectionString
{
get;
set;
}
所以,我的问题是,在命名空间之外声明枚举是一种好方法还是坏方法?我认为应该在命名空间内声明枚举,并通过命名空间在另一个类或其他项目中使用枚举。请告知标准方法。
将这些类型打包到有意义的命名空间中是一种很好的做法,这样我们就可以有一个清晰的分离和更好的想法。但是,如果这些类型是常见的,我们不希望类型转换,那么你可能会把它们放在命名空间之外。 – 2014-12-03 08:21:27
@SivaGopal - 我无需使用名称空间就可以看到枚举的唯一好处是我们可以在其他类中使用它,而无需添加名称空间的名称。 – 2014-12-03 09:41:27
Shory版本:是的,它应该在命名空间内;污染全球命名空间的形式很差;它也存在导致冲突的真实风险。 – 2014-12-04 11:08:01