C# 对象数组tryparse

C# 对象数组tryparse,c#,.net,vb.net,C#,.net,Vb.net,我有一个由5个对象和5个文本框组成的数组。我想检查相应文本框中的值是否对对象类型有效 我现在已经硬编码了,我解析出对象类型,然后根据对象类型使用tryparse语句 我能自动完成吗?我可以检测该类型并对该类型使用tryparse语句吗。可能是这样的: if objectarray(x).tryparse(textbox(x).text, nothing) 扫描此请求的问题在于未在对象级别指定TryParse 如果您有一组正在查找的固定数据类型,则可以使用扩展方法扩展对象类型,或者可以将测试添加

我有一个由5个对象和5个文本框组成的数组。我想检查相应文本框中的值是否对对象类型有效

我现在已经硬编码了,我解析出对象类型,然后根据对象类型使用tryparse语句

我能自动完成吗?我可以检测该类型并对该类型使用tryparse语句吗。可能是这样的:

if objectarray(x).tryparse(textbox(x).text, nothing)

扫描

此请求的问题在于未在对象级别指定TryParse

如果您有一组正在查找的固定数据类型,则可以使用扩展方法扩展对象类型,或者可以将测试添加到ObjectArray实现中

更新

我使用以下代码成功地在C#中的对象类上实现了一个扩展方法:

public static class MyExtensions
{
    public static bool TryParse(this Object oObject, string s, out int result)
    {
        return System.Int32.TryParse(s, out result);
    }

}
并将其用作:

        Object test = new object();

        int x;

        test.TryParse("1", out x);
但是,当我尝试将其移植到Visual Basic时,我发现可以扩展很多东西,但不能扩展对象数据类型。这个问题有更多的细节:

因此,您可以在C#中扩展对象,或者,如果阵列中的对象属于特定的基类型或实现特定的接口,则可以扩展该基类型以实现此功能

另一种方法是直接将此功能添加到对象数组类中,然后根据基础数据类型确定要调用哪个tryparse

在objectarray类中:

Public Function TryParse(wIndex As Integer, s As String) As Boolean

    Dim oObject As Object

    oObject = Me.Item(wIndex)

    Select Case oObject.GetType.Name.ToLower
        Case "int32", "system.int32"
            Dim wTestInt As Integer
            Return Int32.TryParse(s, wTestInt)

            ' Etc...

    End Select

End Function

此请求的问题是没有在对象级别指定TryParse

如果您有一组正在查找的固定数据类型,则可以使用扩展方法扩展对象类型,或者可以将测试添加到ObjectArray实现中

更新

我使用以下代码成功地在C#中的对象类上实现了一个扩展方法:

public static class MyExtensions
{
    public static bool TryParse(this Object oObject, string s, out int result)
    {
        return System.Int32.TryParse(s, out result);
    }

}
并将其用作:

        Object test = new object();

        int x;

        test.TryParse("1", out x);
但是,当我尝试将其移植到Visual Basic时,我发现可以扩展很多东西,但不能扩展对象数据类型。这个问题有更多的细节:

因此,您可以在C#中扩展对象,或者,如果阵列中的对象属于特定的基类型或实现特定的接口,则可以扩展该基类型以实现此功能

另一种方法是直接将此功能添加到对象数组类中,然后根据基础数据类型确定要调用哪个tryparse

在objectarray类中:

Public Function TryParse(wIndex As Integer, s As String) As Boolean

    Dim oObject As Object

    oObject = Me.Item(wIndex)

    Select Case oObject.GetType.Name.ToLower
        Case "int32", "system.int32"
            Dim wTestInt As Integer
            Return Int32.TryParse(s, wTestInt)

            ' Etc...

    End Select

End Function