vb.net到C#:使用对象上的数据结合方法
-
25-10-2019 - |
题
在vb.net中,我从任何数据源创建了2个用于数据绑定gridviews/dropdownlists/etc的速记函数(例如dataReader,iReader或collection等):
Public Shared Sub BindObject(ByVal objDataSource As Object, ByVal objItem As Object)
objItem.DataSource = objDataSource
objItem.DataBind()
End Sub
Public Shared Sub BindObject(ByVal objDataSource As Object, ByVal objItem As Object, ByVal sTextField As String, ByVal sValueField As String)
objItem.DataSource = objDataSource
If sTextField <> "" Then objItem.DataTextField = sTextField
If sValueField <> "" Then objItem.DataValueField = sValueField
objItem.DataBind()
End Sub
我将其转换为C#这样:
public static void BindObject(object objDataSource, object objItem)
{
objItem.DataSource = objDataSource;
objItem.DataBind();
}
public static void BindObject(object objDataSource, object objItem, string sTextField, string sValueField)
{
objItem.DataSource = objDataSource;
if (!string.IsNullOrEmpty(sTextField))
objItem.DataTextField = sTextField;
if (!string.IsNullOrEmpty(sValueField))
objItem.DataValueField = sValueField;
objItem.DataBind();
}
然而,这显然不起作用,因为数据结合方法无法访问 Objitem, ,除非我明确地将其施加到诸如“ listbox”或“ gridview”等类型等。同样,我要保留灵活性 objdatasource 可以是iReader,偶像等。
是否可以使用匿名方法或类似方法在C#中复制VB.NET方法?
谢谢。
解决方案
您可以使用“ var”匿名类型或输入案例语句以查看传入对象是什么类型。
-编辑-
您是正确的,这里的VAR似乎不可行。请尝试此解决方案:
public void BindObject(object objDataSource, object objItem)
{
(objItem as BaseDataBoundControl).DataSource = objDataSource;
(objItem as BaseDataBoundControl).DataBind();
}
问候,保罗
其他提示
您可以在VB代码中严格关闭选项。 TSK TSK-这并不是真正的最佳选择。
要在C#中获得类似的效果,您可以做到这一点:
public static void BindObject(object objDataSource, dynamic objItem)
{
objItem.DataSource = objDataSource;
objItem.DataBind();
}
public static void BindObject(object objDataSource, dynamic objItem, string sTextField, string sValueField)
{
objItem.DataSource = objDataSource;
if (!string.IsNullOrEmpty(sTextField))
objItem.DataTextField = sTextField;
if (!string.IsNullOrEmpty(sValueField))
objItem.DataValueField = sValueField;
objItem.DataBind();
}
但是,再次,您应该真正研究一种方法来保留强大的编译时类型检查。
不隶属于 StackOverflow