将C#泛型用于具有类似属性的离散类型

时间:2018-03-21 09:00:13

标签: c# generics

我有4个C# File.WriteAllBytes("testFile.csv", fileBytes); 具有几乎相同的属性。具体而言,许多属性具有相同的名称和类型。但是,我不能轻易地将它们抽象为超类,因为DataSets是使用“DataSets”程序从XML schema自动生成的,并且如果模式曾经需要重新生成它们变化。 DataSet也非常复杂(每行14000行代码)。

我想写一些只使用共同属性的常用例程。有没有办法做到这一点?

到目前为止,这是一些非理想的想法:

  1. 使用泛型?不可能我认为因为where子句会 必须考虑4种替代类型?
  2. 添加界面?可能,但创建和管理有点痛苦。
  3. 反射?没吸引力。

1 个答案:

答案 0 :(得分:0)

我最终选择了接口。这是相当多的工作,因为我已经有20个接口,还没有完成。我仍然有两种想法,即使后期绑定方法可能更好,使用字符串而不是强类型来选择数据。

对于将来遇到这种情况的人,我有一个提示,使接口方法更容易被接受。在我的第一次尝试中,我无法使继承定义在部分类中工作,因此我直接编辑生成的DataSet类以向每个类添加20个接口继承语句。当类重新生成时,这将成为一个问题。但是,我现在发现问题是因为类嵌套,它可以在一个单独的文件中完成,而不会更改自动生成的类文件。

以下是需要一个人的具体示例:

namespace GvResults // namespace for this auto-generated DataSet
{
    public partial class NewDataSet     // Main class in the auto-generated DataSet
    {
        public partial class ResultSetRow : ResultSetDataFns.IResultSetRow { }      // Add interface inheritance to a nested class in the auto-generated DataSet
        public partial class RiskRecordRow : ResultSetDataFns.IRiskRecordRow { }
        // ...etc...
    }
}