【问题标题】:Using generic types with an asp.net user control使用带有 asp.net 用户控件的泛型类型
【发布时间】:2010-01-25 10:47:56
【问题描述】:

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

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

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

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

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

感谢您的帮助!

【问题讨论】:

  • 你能编辑并给出一些代码示例吗?如上所述,这非常令人困惑。你让我感兴趣,我想帮忙,但我很难解决问题。

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


【解决方案1】:

这里有几个想法和想法:

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

但是由于您将应用程序的数据访问 (DataManager) 和表示(用户控制)紧密耦合,因此面临挑战。

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

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-05-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-01-22
    相关资源
    最近更新 更多