c# - 将泛型类型与 asp.net 用户控件一起使用

标签 c# asp.net generics user-controls

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

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

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

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

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

感谢您的帮助!

最佳答案

这里有一些想法,想法:

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

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

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

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

希望对您有所帮助。只有一个人的意见,祝你好运。

关于c# - 将泛型类型与 asp.net 用户控件一起使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2124240/

相关文章:

java - 如何获取作为通用参数传递给 Java 函数的实体的字段?

c# - 水平滚动时 Telerik Grid 样式不正确

c# - 结构上的 as 运算符?

asp.net - .Replace(Environment.NewLine, "<br/>")

c# - SQL Server 2008 DATE 类型在 visual studio 中显示 DATE & TIME

java - 迭代参数化列表(原始列表类型分配后)

c# - 需要使用code behind c#自动高亮文本框中的关键字

c# - 上传文件时服务器要求输入用户名和密码

asp.net - 405 方法选项不允许在 asp.net web api Controller 中使用?

c# - 使用泛型时转换为抽象类或接口(interface)