UserControl依赖于业务逻辑类

时间:2011-03-28 17:33:10

标签: c# .net user-controls

我正在创建一个图表控件,它目前只是一个更大的项目文件夹中的UserControl,但我想知道是否/如何将其拉出来用作多个项目的控件。我想那时我必须把它放在它自己的项目中只包含控件? (之前我从未真正制作过通用的用户控件,只在项目中使用过它们)

这种情况下的问题是图表控件依赖于自定义类TimeSeries,它是较大项目的业务逻辑的一部分。该类中的更新会触发用户控件侦听的事件,以更新图表。此TimeSeries类也将出现在使用该控件的其他项目中,但显然它不会是“相同”类。

所以这意味着我不能简单地将这个用户控件分开。但这意味着什么呢,我在这里有一些糟糕的结构实践吗?你会怎么建议继续这个?

1 个答案:

答案 0 :(得分:1)

将UserControl放入自己的项目时,还要创建一个界面:

interface ITimeSeries
{
     // Stuff that the UserControl calls on the TimeSeries
}

然后在拥有自己的TimeSeries的主项目中:

class TimeSeries : ITimeSeries
{
    // Implement the methods on the interface
}

然后,您的UserControl应该在其构造函数中使用ITimeSeries,或者具有ITimeSeries类型的公共字段/属性,可以由任何使用它的项目设置。这样,当它需要使用TimeSeries时,它并不关心它正在使用哪个实现。