我正在创建一个图表控件,它目前只是一个更大的项目文件夹中的UserControl,但我想知道是否/如何将其拉出来用作多个项目的控件。我想那时我必须把它放在它自己的项目中只包含控件? (之前我从未真正制作过通用的用户控件,只在项目中使用过它们)
这种情况下的问题是图表控件依赖于自定义类TimeSeries,它是较大项目的业务逻辑的一部分。该类中的更新会触发用户控件侦听的事件,以更新图表。此TimeSeries类也将出现在使用该控件的其他项目中,但显然它不会是“相同”类。
所以这意味着我不能简单地将这个用户控件分开。但这意味着什么呢,我在这里有一些糟糕的结构实践吗?你会怎么建议继续这个?
答案 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时,它并不关心它正在使用哪个实现。