2010-07-29 15 views
0

Qu'est-ce qui ne va pas dans ce code? ..Obtention d'un type à partir d'un objet en C#

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="" 
    } 

} 

Je suis une erreur « n'a pu être trouvée Dato « » Le nom du type ou espace de noms (vous manque une directive à l'aide ou une référence d'assemblage?) »

Je veux mettre ce VB code .net C# dans

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 

Merci de

Répondre

4

L'opérateur typeof ne fonctionne que sur les types. Essayez plutôt dato.GetType().

+0

Super !! merci ...: S ... je suis très nouveau à C# – carlos

0

Pour développer la réponse de Mark, dato n'est pas un type, c'est une variable. typeof() fonctionne sur le type (c'est-à-dire la classe ou la structure, qui dans ce cas est l'objet).

En effet ce que vous cherchez est l'identification de type à l'exécution, que vous obtenez avec dato.GetType().