使用asp.net用户控件的泛型类型

时间:2010-01-23 18:41:14

标签: c# asp.net generics user-controls

有一天,我构建了一个用户控件,可以动态地从给定的自定义业务对象构建数据显示。

它运行良好,但我想在其他应用程序中使用该控件,并且它当前封装的方式是低于标准。

我的自定义用户控件只包含基本的html控件和一些内部属性,因此我可以从其他类访问它们。

在同一个程序集中,我有一个类DataManager - 它采用IEnumerable和对其关联用户控件的引用。问题是我必须处理实现细节,例如从调用控件的页面重绘Page_Init,因为实际的用户控件不知道T。

有没有办法将泛型类型传递给用户控件以简化操作,或者在不指定T的情况下存储对DataManager对象的引用的方法?

感谢您的帮助!

1 个答案:

答案 0 :(得分:2)

以下是一些想法,想法:

您正在尝试实现演示文稿(用户控件)与业务对象的特定类型之间的分离。

但由于您已紧密耦合应用程序的数据访问(DataManager)和演示文稿(用户控件),因此遇到了挑战。

也许您应该将目标转移到将业务对象和数据层与表示层分离。

可能有助于您实现这一目标的一些想法包括: 1)考虑在用户控件上创建一个保存数据的属性,并在页面加载或页面初始化中设置此属性..如果您发现自己正在与页面生命周期作斗争,因为控制页面加载在页面加载事件之前触发只是创建您的在自定义用户控件上拥有自己的绑定方法,并在使用数据设置用户控件属性后调用它 2)为传递给用户控件的数据创建一个接口或视图模型,并将其用作保存数据的属性的类型 - 您可以保持类型通用但我很难想到用户控件将与我梦想的任何业务对象一起工作,所以这似乎是一个坏主意 3)无论实现细节如何,您的DataManager都需要更改用户控件。一个名为DataManager的对象应该只有一个责任,应该是获取数据并且不了解用户控件或应用程序的表示

我希望这会有所帮助。只有一个人的意见,祝你好运。