2016-12-12 3 views
0

Ich habe einen Vertrag einer Antwort von einem WEBApi, die Nullable DateTime zurückgibt. Aber ich brauche es nur DateTime, was den Wert DateTime.MaxValue ergibt, falls es null ist.Konvertieren einer DateTime? zu DateTime in einer Setter-Funktion in C#

Aber dieser Ansatz erfordert, dass ich DateTime explizit konvertieren? zu DateTime alle in meinem Code. Also habe ich mich gefragt, wie die Setter-Funktion funktionieren würde? Wird es zuerst initialisiert und dann der DataType überprüft? Wenn ja, dann kann ich den obigen Code durch den folgenden Code ersetzen:

Ist das möglich? Oder wird die Setter-Funktion nach der DataType-Prüfung während der Deserialisierung aufgerufen?

+0

Wie sollte der Standard aussehen? 'DateTime.MaxValue' auch? – nozzleman

+0

Ja, der Standardwert ist DateTime.MaxValue –

+0

Ich denke, Ihre einzige Option ist die Verwendung des Nullkoaleszenzoperators. – NoviceProgrammer

Antwort

3

Nein, das ist nicht möglich, der übergebene Wert muss den gleichen Typ wie die Eigenschaft haben. Sie könnten eine andere Eigenschaft in Ihrem Code verwenden:

public DateTime? ApiEndDate { get; set; } 

public DateTime EndDate => ApiEndDate ?? DateTime.MaxValue; 

Nun ist die api verwendet die Eigenschaft ApiEndData (wenn Sie nicht umbenennen kann es als EndDate verlassen und benennen Sie die anderen) und Sie die andere Eigenschaft in Ihrem Code verwenden können .

2

Nein, das ist nicht möglich. Sie können eine Standardeigenschaft erstellen, um den Wert zu erhalten:

public DateTime EndDateOrDefault 
{ 
    get { return endDate; } 
} 

Und diese Eigenschaft in Ihrem Code aufrufen. Sie können Ihre aktuelle Immobilie so halten, dass sie Ihrem Servicevertrag entspricht.

+0

Also, dann würde der Datentyp überprüft werden, bevor die Setter-Funktion aufgerufen wird? –

+0

Ihr aktuelles Eigentum bleibt unverändert, so dass die Anforderungen für Ihren Dienst nicht geändert werden. Rufen Sie diese Eigenschaft in Ihrem gesamten Code auf, um zu verhindern, dass Sie jedes Mal '.Value 'aufrufen müssen. –

Verwandte Themen