C# 图书馆通过接口输入数据
我们的C#解决方案中出现了一种模式问题 最初的想法: 我们有一套功能(主要是计算),这是几个项目所需要的。我们设想我们的解决方案是模块化的——每个功能都实现为一个类库,在其他项目中可以作为.dll引用 第一期: 发生的事情是,库有类,这些类指定了进行数学运算所需的输入数据。由于单个库可以在许多项目中使用,我们最终为每个项目编码映射,将项目域对象移植到输入数据类。这很乏味,因为我们大部分时间都在进行一对一的转换——这些类基本上是相同的 创意: 我们认为使用接口而不是类来指定输入数据可以解决问题。这样,我们就可以简单地用接口标记我们的域类,而不必再进行映射了 当前问题: 我们现在有一个完整的混乱与接口定义和使用这些接口的计算方法。例如C# 图书馆通过接口输入数据,c#,interface,C#,Interface,我们的C#解决方案中出现了一种模式问题 最初的想法: 我们有一套功能(主要是计算),这是几个项目所需要的。我们设想我们的解决方案是模块化的——每个功能都实现为一个类库,在其他项目中可以作为.dll引用 第一期: 发生的事情是,库有类,这些类指定了进行数学运算所需的输入数据。由于单个库可以在许多项目中使用,我们最终为每个项目编码映射,将项目域对象移植到输入数据类。这很乏味,因为我们大部分时间都在进行一对一的转换——这些类基本上是相同的 创意: 我们认为使用接口而不是类来指定输入数据可以解决问题。这
public interface ILevel2Child
{
}
public interface ILevel1Child<TLevel2Child>
where TLevel2Child : ILevel2Child
{
List<TLevel2Child> Children { get; }
}
public interface IParent<TLevel1Child, TLevel2Child>
where TLevel1Child: ILevel1Child<ILevel2Child>
where TLevel2Child: ILevel2Child
{
List<TLevel1Child> Children { get; }
}
但这阻止了我们这样做
public class Level2Child : ILevel2Child
{
}
public class Level1Child : ILevel1Child
{
List<Level2Child> Children { get; }
}
public class Parent : IParent
{
List<Level1Child> Children { get; }
}
public class Level2Child:ILevel2Child
{
}
公共级别1儿童:I级别1儿童
{
列出子项{get;}
}
公共类父级:IParent
{
列出子项{get;}
}
这是不可接受的。为什么要将
列表
属性类型更改为列表
?在任何情况下,如果您必须这样做没有问题,那么您可以访问/拥有这两个类。我们需要具体的类,因为它们实现了多个接口。所以你建议我们复制这些属性,比如:公共类父类:IParent{List Children{get;}List IParent.Children{get{return Children;}}}}
?
public class Level2Child : ILevel2Child
{
}
public class Level1Child : ILevel1Child
{
List<Level2Child> Children { get; }
}
public class Parent : IParent
{
List<Level1Child> Children { get; }
}