Получение типа из объекта в C # - PullRequest
0 голосов
/ 30 июля 2010

Что не так в этом коде?..

public void gett(object dato, ref object ty)
{

    dato = 1;  // <- this compiles 
    Type t = typeof(dato); //<--- here i Got an error 
    if (t == typeof(int))
    {
         ty= 1

    }
    else 
    {
        ty=""
    }

}

Я получил ошибку "Не удалось найти тип или имя пространства имен 'dato' (отсутствует директива using или ссылка на сборку?)"

Я хочуположить этот код VB .net в C #

Sub getty(ByVal dato As Object, ByRef ty As Object)

        If IsDBNull(dato) Then


            Select Case ty.GetType.FullName

                Case GetType(Integer).FullName
                    ty = 0

                Case GetType(String).FullName
                    ty = ""

                Case GetType(Guid).FullName

                    ty = New Guid("00000000-0000-0000-0000-000000000000")
                Case GetType(DateTime).FullName
                    Dim da As DateTime = New DateTime(1900, 1, 1)

                    ty = da

                Case Else
                    ty = ""
            End Select

        Else
            ty = dato


        End If

    End Sub

Спасибо

Ответы [ 2 ]

4 голосов
/ 30 июля 2010

Оператор typeof работает только для типов.Попробуйте dato.GetType() вместо.

0 голосов
/ 30 июля 2010

Чтобы расширить ответ Марка, dato - это не тип, а переменная. typeof () работает с типом (то есть с классом или структурой, которая в данном случае является объектом).

Действительно, вы ищете идентификацию типа во время выполнения, которую вы получаете с помощью dato.GetType ().

...