J'ai dans mon C# lib:mot-clé dynamique permet "peut-être" monad?
public static TOut IfNotNull<TIn, TOut>
(this TIn instance, Func<TIn, TOut> func)
{
return instance == null ? default(TOut) : func(instance);
}
occasion comme:
DateTime? expiration = promo.IfNotNull(p => p.TermsAndConditions.Expiration)
.IfNotNull(e => e.Date);
Je garde wracking mon cerveau à essayer de comprendre comment utiliser le mot-clé C# 4 dynamic
pour activer la syntaxe suivante :
DateTime? expiration = promoOffer.TermsAndConditions.Maybe()
.Expiration.Maybe()
.Date;
J'ai eu des exemples de couple que je pensais, mais ils travaillé est tombé en panne lorsque vous démarrez enchaînant les Maybe()
s.
Des idées?
(Est-ce que je perds mon temps? Est Maybe()
une victoire sur IfNotNull()
)?
Peut-être que j'ai une mauvaise idée, mais ne serait pas la ?? opérateur être utile ici? – spender
les variables dynamiques ne peuvent pas voir les méthodes d'extension je crois. –
Personnellement, j'aime bien le 'IfNotNull()' que vous avez actuellement. Comme vous ne pouvez pas utiliser 'dynamic' avec des méthodes d'extension, mon sentiment est que le code pourrait finir par être horrible. –