1

ich meinen Klassenwert in redis eingefügt habe über Verfahren folgendenRedis Get HashSet in der gewünschten Typen nicht mit Nullable Type arbeitet

public static bool InsertHashItem(string key, object obj) 
     { 
      bool result = false; 
      try 
      { 
       if (Muxer != null && Muxer.IsConnected && Muxer.GetDatabase() != null) 
       { 
        IDatabase getDatabase = Muxer.GetDatabase(); 
        getDatabase.HashSet(key, ToHashEntries(obj)); 
        result = true; 
       } 
      } 
      catch (Exception ex) 
      { 
       Logger.Fatal(ex.Message, ex); 
      } 
      return result; 
     } 

Meine Klasse sieht aus wie

public class TestType 
    { 
     public int telcoid { get; set; } 
     public int parent_id { get; set; } 
     public string checksum { get; set; } 
     public string tag_registration_id { get; set; } 
     public string market_id { get; set; } 
     public double amount { get; set; } 
     public string utid { get; set; } 
     public int status { get; set; } 

     public DateTime? dt { get; set; } 

    } 

nun diese Klasse zu bekommen, ich habe geschrieben ein Verfahren, das auf NULL festlegbare Typen

public static T GetHashItem<T>(string key) where T : new() 
     { 
      T obj = default(T); 

      try 
      { 
       if (Muxer != null && Muxer.IsConnected && Muxer.GetDatabase() != null) 
       { 
        IDatabase getDatabase = Muxer.GetDatabase(); 
        var hashkey = getDatabase.HashKeys(key); 
        if (hashkey != null && hashkey.Count() > 0) 
        { 
         var dic = hashkey.ToDictionary(k => k, k => getDatabase.HashGet(key, k)); 

         obj = new T(); 
         foreach (var prop in typeof(T).GetProperties()) 
         { 


          prop.SetValue(obj, Convert.ChangeType(dic[prop.Name], prop.PropertyType)); 
         } 
        } 
       } 
      } 
      catch (Exception ex) 
      { 
       Logger.Fatal(ex.Message, ex); 
      } 
      return obj; 
     } 

Bitte Rat, was Korrektur versagt in eed darin

Antwort

2

Versuchen Sie, den zugrunde liegenden Typ zu erhalten, wenn die Eigenschaft Typ Nullable ist, wie folgt aus:

Type type = Nullable.GetUnderlyingType(prop.PropertyType) ?? prop.PropertyType; 
prop.SetValue(obj, Convert.ChangeType(dic[prop.Name], type)); 
+0

Dank. Habe es aber ähnlich ein bisschen anders versucht. Aber jetzt werde ich dein empfohlenes versuchen. –