Có cách nào tốt hơn/ngắn hơn để xử lý (nhiều) tham chiếu null không, ví dụ khi tôi đang sử dụng LinqToXML.Xử lý tham chiếu null khi sử dụng ví dụ: Linq-To-Xml
Tôi đã viết phần mở rộng này cho XElement xử lý nó khá độc đáo, nhưng có thể có một cách khác?
Và còn tên hàm thì sao? "Và" không thực sự mô tả.
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();
}
}
PS: Tôi biết tôi có thể sử dụng XPath cho ví dụ này, nhưng không phải lúc nào cũng xảy ra trường hợp phức tạp hơn.
Tôi thích ví dụ đầu tiên, mặc dù tôi chỉ có thể chỉnh sửa mã của tôi để "nơi T : class "và có kết quả gần như giống nhau. Nhưng khả năng trả lại các loại khác là một sự bổ sung tốt đẹp! –