2015-08-07 14 views
7

Dato il seguente class:C# -Implicit costruttore da oggetto dinamico

public class DataPair{ 
    public string Key { get; set; } 
    public object Value { get; set; } 

    public DataPair(string key, object value) 
    { 
     Key = key; 
     Value = value; 
    } 
} 

C'è qualche possibilità di implementare qualcosa di simile

public static implicit operator DataPair(dynamic value) 
{ 
    return new DataPair(value.Key, value.Value); 
} 

Così posso creare una nuova istanza in questo modo

DataPair myInstance = {"key", "value"}; 
+1

Perché non si utilizza l'inizializzazione dell'oggetto che chiama il construtor deafult se esiste? –

+0

@ XaweryWiśniowiecki: Potresti chiarire come definirei esattamente l'inizializzazione dell'oggetto? – KingKerosin

+0

Penso che questo esempio dalla documentazione lo chiarisca semplicemente :) https://msdn.microsoft.com/en-us/library/bb397680.aspx –

risposta

1

Questo è probabilmente il più vicino che hai intenzione di ottenere:

public static implicit operator DataPair(string[] values) 
{ 
    return new DataPair(values[0], values[1]); 
} 

e usarlo come:

DataPair myInstance = new []{"gr", "value"}; 

che è il più vicino che si vuole ottenere, come la sintassi = {"gr", "value"}; è riservata per gli array, che non è possibile sottoclasse.