Un compañero de trabajo mío se le ocurrió esto y me pregunto qué piensan los demás? Personalmente, me parece interesante, pero me pregunto si es una gran partida. Ejemplos de código a continuación. Métodos de extensión en la parte inferior.Más fluido C#/.NET
Pensamientos generales por favor. ¿Otros métodos de extensión que podrían agregarse?
var ddl = Page.FindControl("LocationDropDownList") as DropDownList;
ddl.Visible = true;
ddl.SelectedValue = "123";
if(isAdmin)
ddl .SelectedValue = "111";
se convierte en:
Page.FindControl("LocationDropDownList")
.CastAs<DropDownList>()
.With(d => d.Visible = true)
.With(d => d.SelectedValue = "123")
.WithIf(isAdmin, d => d.Items.Add(new ListItem("Admin", "1")));
O:
Page.FindControl("LocationDropDownList")
.CastAs<DropDownList>()
.With(d =>
{
d.Visible = true;
d.SelectedValue = "123";
})
.WithIf(isAdmin, d => d.SelectedValue = "111");
Los métodos de extensión:
public static TResult CastAs<TResult>(this object obj) where TResult : class
{
return obj as TResult;
}
public static T With<T>(this T t, Action<T> action)
{
if (action == null)
throw new ArgumentNullException("action");
action(t);
return t;
}
public static T WithIf<T>(this T t, bool condition, Action<T> action)
{
if (action == null)
throw new ArgumentNullException("action");
if (condition)
action(t);
return t;
}
** Cada diseño debe resolver un problema. ** ¿Qué problema es este diseño API fluida tratando de resolver? Parece agregar complejidad sin crear valor. – LBushkin
¡Esto es como tratar de matar una mosca con una bazooka! No hay nada que ganar, solo más líneas de código. – JOBG
En mi opinión, 'WithIf' es mucho menos legible que una simple declaración if. Si va a hacer una interfaz "fluida", ¡al menos hágala leer con fluidez! –