Я хочу, чтобы иметь возможность вызывать этот метод так:C# Общий метод: как объявить этот вид?
test.TestMethod<From, To>(to => to.Prop1);
и имеют IDE автозаполнения свойств от до. В TestMethod
я хочу вывести имя свойства. В этом случае Prop1
. Кажется, что он работает, но я не уверен в Expression<Func<TTo, object>>
, особенно в части объекта.
public class Test
{
public void TestMethod<TFrom, TTo>(Expression<Func<TTo, object>> p)
{
}
}
Он делает то, что его должен теперь, если я рекурсию через р, я могу добраться до имени, но это не выглядит правильно для меня, тем более, что вытягивать имя реквизита выглядит следующим образом:
((MemberExpression)((UnaryExpression)(((LambdaExpression)p).Body)).Operand)).Member.Name
Любой способ сделать это чище?
Возможно, что-то подобное было бы полезно? http://stackoverflow.com/questions/31261955/nameof-expression-in-net-framework-4/31262225#31262225 – Rob
«Я хочу (...) иметь свойства автозаполнения IDE» - поскольку это скорее IDE -специфический, вы должны добавить соответствующий тег для IDE (возможно, Visual Studio? Или SharpDevelop? Или MonoDevelop?) на ваш вопрос. –
@Rob - хм ... это работает только на "этом". Не на TTo. Метод должен быть строго типизирован для TTo. – SledgeHammer