代码之家  ›  专栏  ›  技术社区  ›  Kelly Robins

对ASP.NET用户控件使用泛型类型

  •  3
  • Kelly Robins  · 技术社区  · 16 年前

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

    它工作得很好,但我想在其他应用程序中使用该控件,而且它当前的封装方式还不理想。

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

    在同一个程序集中,我有一个类datamanager,它接受一个IEnumerable和对其关联用户控件的引用。问题是,我必须处理实现细节,比如从调用控件的页面重新绘制页面初始化,因为实际的用户控件不知道t。

    是否有方法将泛型类型传递给用户控件以简化操作,或者有方法存储对datamanager对象的引用而不指定t?

    谢谢你的帮助!

    1 回复  |  直到 16 年前
        1
  •  2
  •   Craig McKeachie    16 年前

    以下是一些想法和想法:

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

    但也面临着挑战,因为您已经将应用程序的数据访问(datamanager)和表示(用户控制)紧密地耦合在一起。

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

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

    我希望这能有帮助。只有一个人认为,祝你好运。