如果我有一个通用的应用程序框架,用于为多种场景使用多个不同数据源的各种业务应用程序,那么是否可以在运行时使用反射指定所有对象或声明为object
,或者这是不好的做法?
例如,我需要将任意数据源绑定到Winforms网格。完全通用地操作,在运行时评估属性和字段,而不是专门声明类型,这是好的实践吗?
场景:
Private sub ugdJobs(sender as object, e as InitializeLayoutEventArgs) handles ugdJobs.InitializeLayout
sender.datasource = something
End sub
与
相对private sub ugdJobs(sender as object, e as InitializeLayoutEventArgs) handles ugdJobs.InitializeLayout
Dim jobdata as bindinglist(of DAL.jobs)(DAL.jobslist.getall())
Ugdjobs.datasource = jobdata
End Sub
明确声明ugdjobs.datasource的类型有什么意义?
无论如何,您要分配给的DataSource
属性几乎肯定是Object
类型,因此从数据绑定的角度了解所分配对象的特定类型没有任何好处。如果你想在其他地方使用那个对象,那么知道那个特定的类型可能会有一些好处。如果您绑定到ComboBox
或类似的,那么您必须了解列表中的项目,以便设置DisplayMember
和/或ValueMember
属性,但是为数据源中的每个属性/列创建列的网格将为您完成这一切。