Así que tengo esto en mi C# lib:palabra clave dinámica habilita "tal vez" mónada?
public static TOut IfNotNull<TIn, TOut>
(this TIn instance, Func<TIn, TOut> func)
{
return instance == null ? default(TOut) : func(instance);
}
utilizado como:
DateTime? expiration = promo.IfNotNull(p => p.TermsAndConditions.Expiration)
.IfNotNull(e => e.Date);
sigo arruina mi cerebro tratando de averiguar cómo utilizar el C# 4 dynamic
palabra clave para permitir que esta sintaxis vez :
DateTime? expiration = promoOffer.TermsAndConditions.Maybe()
.Expiration.Maybe()
.Date;
tuve un par de ejemplos que he opinión dieron pero se rompió cuando se inicia el encadenamiento de las Maybe()
s.
¿Alguna idea?
(¿Estoy perdiendo el tiempo? ¿Es Maybe()
una victoria sobre IfNotNull()
)?
Tal vez tengo una idea equivocada, pero no lo haría el ?? operador ser de utilidad aquí? – spender
variables dinámicas no pueden ver los métodos de extensión, creo. –
Personalmente me gusta mucho el 'IfNotNull()' que tiene actualmente. Como no puedes usar 'dynamic' con los métodos de extensión, mi sensación es que el código podría terminar siendo horrendo. –