¿Existe una manera mejor/más corta para manejar (muchas) referencias nulas, por ejemplo, cuando estoy usando LinqToXML.Manejo de referencias nulas cuando se utiliza, por ejemplo, Linq-To-Xml
Escribí esta extensión para XElement que lo maneja muy bien, ¿pero tal vez hay otra manera?
¿Y el nombre de la función? "Y" no es realmente descriptivo.
public static class XmlExtentions
{
public static T And<T>(this T obj, Func<T, T> action) where T : XElement
{
return obj == null ? obj : action(obj);
}
}
internal class Program
{
private static void Main()
{
//create example xml element
var x =
XElement.Parse("<root><find><name>my-name</name></find></root>");
//old way
var test1 = x.Element("find");
if (test1 != null) test1 = test1.Element("name");
Console.WriteLine(test1);
//using the extentions method
var test2 = x.Element("find").And(findme => findme.Element("name"));
Console.WriteLine(test2);
Console.ReadLine();
}
}
PD: Sé que podría usar XPath para este ejemplo, pero no siempre es el caso en casos más complejos.
me gusta el primer ejemplo, a pesar de que sólo podía editar el código para "donde T : clase "y tienen casi el mismo resultado. ¡Pero la posibilidad de devolver otros tipos es un buen extra! –