Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Общие вопросы по .NET и C# > (Expression<Func<T>> получить имя типа.


Автор: KuMa1104 20.10.2011, 19:44
Ещё раз здравствуйте, писал про memberInfo http://forum.vingrad.ru/forum/topic-340242.html
решил переформулировать.

Код

public static string GetPropertyName<T>(Expression<Func<T>> expression)
        {
            MemberExpression body = (MemberExpression)expression.Body;
            return body.Member.Name;
        }


Код

PlanTrigger pTriger = new PlanTrigger ();
 pTriger.EventOther1Value = "AAA";

 string s2 = ReflectionTools.GetPropertyMSWOrdName(() => pTriger.EventOther1Value); // Вернет "EventOther1Value"


 

Я хочу получит ещё и имя типа и  конкатировать их что бы на выходе получить "PlanTrigger_EventOther1Value " это возможно?

Не добавлять дополнительных аргументов в ф-ию!!!


Автор: Fitc 20.10.2011, 21:05
Внутри метода вызываешь MethodBase.GetCurrentMethod(), получаешь из него объект типа MethodBase - наследник MemberInfo, у него есть свойство DeclaringType, у него свойство Name, так ты получишь текст "PlanTrigger"

Автор: KuMa1104 21.10.2011, 10:28
Код

 public class ReflectionTools
{
        public static string GetPropertyName<T>(Expression<Func<T>> expression)
        {

            string name = MethodBase.GetCurrentMethod().DeclaringType.Name;// Вернет ReflectionTools

            MemberExpression body = (MemberExpression)expression.Body;
            return body.Member.Name;
        }
}


Не пойму как здесь можно при помощи MethodBase можно получить PlanTrigger????

Автор: Fitc 21.10.2011, 20:14
извиняюсь, не так понял вопрос, тогда, можно сделать как я тут ответил http://forum.vingrad.ru/forum/topic-340242.html

Автор: KuMa1104 21.10.2011, 22:28
Ну да, хотя думаю есть какой то более изящный способ))

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)