为了通过配置文件配置当前数据库及使用相关的dbhelper,写了如下类:
public static basehelper dbfactory   反射当前配置的dbhelperbasehelper 基类sqlhelper : basehelperoledbhelper : basehelperoraclehelper : basehelper遇到一个问题是:
在basehelper基类里有:public abstract DbParameter MakeParam(string paramName, Enum dataType, int size, ParameterDirection dir, object value);
然后在各个子类里面实现.但是dataType参数不灵活怎么办? 因为OleDbType, SqlDbType这些枚举内的值对应的参类型都不一样, 所以实现的时候不能强转.
我希望的结果是不在开发环境里面传死的OleDbType.VarWChar之类. 那样以后要更改会很麻烦.有没有什么好的点子?
谢谢大家.

解决方案 »

  1.   

    Enum就很不错啊
    正好用来对应,不一致类型,但业务一致的情况
      

  2.   

    楼上你没看懂我说什么吧晕.比如,在开发的时候使用:DbParameter p = theHelper.MakeParam("uname", OleDbType.VarWChar, 16, ParameterDirection.Input);这只能对应当前数据库是access的时候.如果在配置文件改成sql, 那这里就要改成SqlDbType.NVarChar.我不希望为了这个参数又把代码重编译一次, 那这样的话我要配置文件还有什么用. 还多写了那么多代码.
      

  3.   

     Enum dataType换成System.Data.DbType
      

  4.   

    我知道DbType但是你在实现MakeParam的时候是要用具体的类的。比如在OleDbHelper里面实现MakeParam:需要new OleDbParameter(....这里有个参数是要用OleDbType的,不能用DbType
      

  5.   

    确实是设计问题。关于dataType基类中用 DbType各子类中用 各自的 OleDbType、SqlDbType、等