代码之家  ›  专栏  ›  技术社区  ›  Beska

是否可以向.NET中的强类型数据集添加接口?

  •  2
  • Beska  · 技术社区  · 15 年前

    我有一组强类型数据集,每个数据集有两个表。对于每个数据集,一个表是唯一的,但是第二个“元数据”对于每个数据集具有相同的模式。

    在运行时,我确定要使用哪个数据集,并从数据库以适当的方式填充数据表。

    然后我想填充元数据表。对于每个数据集,这将以相同的方式进行,因此我希望使用相同的代码。这样做的一个明显的方法是让每个数据集实现一个可以完成工作的接口。

    当我想要为这些数据集声明这个接口(imyinterface)时,问题就出现了。

    每个强类型数据集都包含许多文件。第一个也是关键的文件是mydataset.designer.cs文件…这是一个自动生成的文件。在开头有一行写着:

    public partial class MyDataSet : global::System.Data.DataSet
    

    我可以在这之后添加我的接口,但我有充分的理由相信当重新生成这个文件时,它可以/将被清除。

    如果我告诉vs我想编辑数据集的代码,它会为我创建一个名为mydataset.cs的新文件。但其中的声明如下:

    partial class MyDataSet
    

    如果我尝试像这样向此添加接口:

    partial class MyDataSet : IMyInterface
    

    它看起来像是我试图添加一个子类。

    处理这件事的正确方法是什么?更改设计器文件,并确保vs不会重新生成它?是否将超类和接口声明都添加到另一个文件中?还有别的吗?

    1 回复  |  直到 15 年前
        1
  •  1
  •   Beska    15 年前

    真的。没有关系。尽管最初在搜索时没有找到这个问题,但在重试这个查询(键入这个长问题之后)时,我很快找到了答案。

    显然,它足够聪明,可以正确地混合和匹配它们,这取决于它是要继承的类还是要实现的接口。

    MSDN 说:

    例如,以下声明:

    partial class Earth : Planet, IRotate { }
    partial class Earth : IRevolve { }
    

    相当于:

    class Earth : Planet, IRotate, IRevolve { }