Скажет, у меня есть троичная операция:Расширения Скрыть оператор троичного
db.Scanners.FirstOrDefault(s => s.ScannerID==24) != null
? db.Scanners.FirstOrDefault(s => s.ScannerID==24).FriendlyName
: "N/A";
Я хотел написать расширение LINQ, чтобы скрыть операцию. Моя лучшая попытка:
public static object PropertyOrNull<T>(this T source, string property)
{
if (source == null || source.GetType().GetProperty(property) == null)
return null;
return source.GetType().GetProperty(property).GetValue(source, null);
}
, который я могу позвонить прямо сейчас с помощью:
(string)db.Scanners.FirstOrDefault(s => s.ScannerID == 24)
.PropertyOrNull("FriendlyName");
Но это довольно некрасиво. Есть ли способ переделать это, когда мне не нужно вставлять и отменять возвращаемое значение? Я довольно новичок в расширениях/дженериках, поэтому простите меня, если это просто.
То есть а не расширение LINQ. Это просто расширение. LINQ - это просто набор методов расширения в пространстве имен 'System.Linq'. Вы не добавляете его туда, вы добавляете свое собственное расширение в другое место. – Servy