使用通用类型与asp.net用户控件

4
前几天我建立了一个用户控件,可以根据自定义业务对象动态构建数据显示。它运行良好,但是我希望能在其他应用程序中使用该控件,而目前其封装方式不够优秀。
我的自定义用户控件只包含基本的 HTML 控件和一些内部属性,以便我可以从其他类中访问它们。在同一个程序集中,我有一个名为 DataManager 的类——它接受一个 IEnumerable 和与其关联的用户控件的引用。问题是,由于实际的用户控件不知道 T,所以我必须处理 Page_Init 上的重新绘制等详细实现细节。
是否有一种方法可以向用户控件传递泛型类型以简化事情,或者存储对 DataManager 对象的引用而不指定 T?
感谢您的帮助!

你能编辑一下并提供一些代码示例吗?按照描述,这很令人困惑。我对此很感兴趣,但我很难弄清楚问题所在。 - Tony Heupel
1个回答

2

以下是几个想法和思路:

你试图在演示层(用户控制)和业务对象特定类型之间实现解耦。

但由于你紧密耦合了数据访问(DataManager)和应用程序的演示层 (用户控制),因此遇到了一些挑战。

也许你应该把目标转移到演示层与业务对象和数据层之间的解耦上。

以下是一些可能对你有帮助的思路: 1)考虑在用户控件中创建一个属性以保存数据,并在页面加载或页面初始化时设置此属性。如果发现自己在与页面生命周期斗争,因为控件页加载在页面的页加载事件之前触发,那么只需在自定义用户控件上创建自己的绑定方法,然后在用数据设置用户控件属性之后调用它。 2)为传入用户控件的数据创建接口或视图模型,并将其用作保存数据的属性的类型——你可以保持类型通用,但我很难想象一个适用于我所想象的任何业务对象的用户控件,因此这似乎是一个糟糕的主意。 3)无论实现细节如何,你需要改变DataManager对用户控件的引用。名为DataManager的对象应该具有单一责任,其责任就是获取数据,而不应了解你的应用程序的用户控件或演示层。

希望这可以帮助到你。这只是一个人的意见,祝你好运。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接