хочу реализовать метод, проверяющий переданный параметр на null. В случае, если параметр равен null, то кидаю исключение. Так вот, в этом исключении хотелось бы видеть название данного параметра (т.е. название непосредственно из самого вызова метода). Сейчас идея такая:
Вызов проверки:
ArgumentChecker.CheckNullArgument(() => nickname);
ArgumentChecker.CheckNullArgument(() => role);
ArgumentChecker.CheckNullArgument(() => hashPassword);
Метод для проверки:
public void CheckNullArgument<T>(Func<T> argumentFunc)
where T : class
{
T value = argumentFunc();
if (value is null)
{
var name = argumentFunc.Method
.ReflectedType
.GetRuntimeFields()
.First()
.Name;
exceptionManager.NullArgument(name);
}
}
При такой реализации argumentFunc всегда имеет Target со всеми именами параметров (в вызывающем методе они также переданы в виде параметров), из-за чего я всегда получаю имя первого параметра.
В общем, хотелось бы увидеть более лаконичное решение этой задачи
using System.Linq.Expressions;
public void CheckNullArgument<T>(Expression<Func<T>> argumentFunc)
where T : class
{
T value = argumentFunc.Compile()();
if (value is null)
{
var expressionBody = (MemberExpression)argumentFunc.Body;
string name = expressionBody.Member.Name;
exceptionManager.NullArgument(name);
}
}
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Перевод документов на английский язык: Важность и ключевые аспекты
в 2d игре на unity пишет такую ошибку при попытке подключения к TextMeshPro через c# код TextMeshPro в UI unity 2020
Хотелось бы узнать, можно ли использовать API Google Карт для отображения конкретных ближайших магазинов на карте? Вкратце: есть мобильное приложение...
Как убрать пунктирную линию в ComboBoxItem? Она появляеться при нажатии и наведении