Sonntag, Dezember 15, 2019

Holen Sie Sich Art Der Unterkunft.Namen in der Reflexion von Nullable-Typ

Möchte ich die Verwendung der besinnung für die Eigenschaften geben.
das ist mein code

var properties = type.GetProperties();
foreach (var propertyInfo in properties)
{
     model.ModelProperties.Add(
                               new KeyValuePair<Type, string>
                                               (propertyInfo.PropertyType.Name,
                                                propertyInfo.Name)
                              );
}

dieser code propertyInfo.PropertyType.Name ist ok, aber wenn meine Art der Immobilie ist Nullable bekomme ich diese Nullable'1 string und wenn schreiben FullName wenn diese stirng System.Nullable1[[System.DateTime, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089]]

  • Ist es ein Nullable<DateTime>?
  • Und was ist die Zeichenfolge, die Sie möchten, zu bekommen? Wie es aussieht, haben die Eigenschaften/Methoden auf Art der Unterkunft, das erlaubt Ihnen den Zugriff auf die generischen Parameter den Typ.
  • stackoverflow.com/questions/5174423/…
  • Siehe die Antwort. Es erstellt einen lesbaren Namen für generische und nicht-generische Typen (System.Nullable<System.Int32> zum Beispiel).
InformationsquelleAutor | 2013-02-16

2 Kommentare

  1. 24

    Ändern Sie Ihren code für nullable-Typ, in diesem Fall nehmen Art der Unterkunft als der erste generische argument:

    var propertyType = propertyInfo.PropertyType;
    
    if (propertyType.IsGenericType &&
            propertyType.GetGenericTypeDefinition() == typeof(Nullable<>))
        {
          propertyType = propertyType.GetGenericArguments()[0];
        }
    
    model.ModelProperties.Add(new KeyValuePair<Type, string>
                            (propertyType.Name,propertyInfo.Name));
  2. 10

    Dies ist eine alte Frage, aber ich lief in diese als gut. Ich mag @Igoy Antwort, aber es funktioniert nicht, wenn der Typ ein array ist eine nullable-Typ. Dies ist meine Erweiterung Methode, mit der eine beliebige Kombination der null – /generischen und array. Hoffentlich wird es nützlich sein, jemand mit der gleichen Frage.

    public static string GetDisplayName(this Type t)
    {
        if(t.IsGenericType && t.GetGenericTypeDefinition() == typeof(Nullable<>))
            return string.Format("{0}?", GetDisplayName(t.GetGenericArguments()[0]));
        if(t.IsGenericType)
            return string.Format("{0}<{1}>",
                                 t.Name.Remove(t.Name.IndexOf('`')), 
                                 string.Join(",",t.GetGenericArguments().Select(at => at.GetDisplayName())));
        if(t.IsArray)
            return string.Format("{0}[{1}]", 
                                 GetDisplayName(t.GetElementType()),
                                 new string(',', t.GetArrayRank()-1));
        return t.Name;
    }

    Dieser wird mit Fällen umgehen, so kompliziert wie diese:

    typeof(Dictionary<int[,,],bool?[][]>).GetDisplayName()

    Gibt:

    Dictionary<Int32[,,],Boolean?[][]>

Kostenlose Online-Tests

Letzte Fragen

Tun ItemView löst Blase?

Ich habe eine CompositeView für eine Tabelle. Ich habe Trigger-set in der Kind-ItemView für jede Zeile... var TableRow = Marionette.ItemView.extend({ tagName:...

Wie kann ich untersuchen, WCF was 400 bad request über GET?

Die folgenden WCF-endpoint funktioniert gut mit dem WCF test client: AssetList ListFlaggedAssets(short processCode, string platform, string endpoint = "null", string portalId = "null", int...

Bei der Verwendung von UUIDs, sollte ich auch mit AUTO_INCREMENT?

Wir bauen eine neue web-app, die eine offline-iPad - /Android-app-version auf einer Reihe von lokalen Geräten, die Einsätze mit neuen Daten. Als solche benötigen...

Actionscript-Objekt, das verschiedene Eigenschaften

Wie kann ich die Anzahl der Eigenschaften in einer generischen Actionscript-Objekt? (Wie die Array-Länge) InformationsquelleAutor Fragsworth | 2011-01-15

Wie plot mehrere Graphen und nutzen Sie die Navigations-Taste im [matplotlib]

Die neueste version von matplotlib erstellt automatisch Navigations-buttons unter den graph. Aber die Beispiele, die ich finden alles im Internet zeigen, wie erstellen Sie...