Ho una sottoclasse di DynamicObject e vorrei implementare il cast implicito per i tipi primitivi in modo simile al metodo di casting esplicito di DO TryConvert; cioè, senza scrivere più funzioni implicite [tipo].DynamicObject implicit casting
Usage:
dynamic myDynamicObject = new MyDynamicObject("1");
int sum = 1 + myDynamicObject; // instead of int i = 1 + (int)myDynamicObject;
È questo possibile e se sì, come?
Con il cast implicito nello scenario "1 + myDynamicObject" utilizza l'operazione sul lato sinistro del tipo di getto; in questo caso ints operation + (int, int). Ma sì, TryBinaryOperation supporta solo le operazioni sul lato sinistro. Ecco perché un simile metodo di casting implicito come TryConvert per il casting esplicito sarebbe molto utile. –
TryConvert supporta infatti il casting implicito ed esplicito. Ad esempio, funziona bene: "int sum = myDynamicObject;" se si sostituisce TryConvert. Ma quando si esegue un'operazione binaria (e credo che anche un unario), il metodo TryConvert non viene chiamato. Ti suggerisco di scrivere a [email protected] e spiegare il tuo caso d'uso lì. Potrebbe essere un bug o potrebbe esserci qualche design razionale dietro a questo, che il team può spiegare meglio di me. –