Здравствуйте, Johny B.Good, Вы писали:
JBG>У меня есть определенный в моей сборке extension для Int32. Я пытаюсь в коде из этой же сборки найти его через рефлекшн с помощью Type.FindMembers, и не нахожу.
Курить доки
10.IsZero()
транслируются компилятором в
класс_с_расширением.IsZero(10)
Соответственно этот метод и нужно искать
А как это делает интиллисенс, то курим доку по
ExtensionAttribute... << RSDN@Home 1.2.0 alpha 4 rev. 1090 >>
Здравствуйте, rameel, Вы писали:
R>Здравствуйте, Johny B.Good, Вы писали:
JBG>>У меня есть определенный в моей сборке extension для Int32. Я пытаюсь в коде из этой же сборки найти его через рефлекшн с помощью Type.FindMembers, и не нахожу.
R>Курить доки
R>R>10.IsZero()
R>
R>транслируются компилятором в
R>R>класс_с_расширением.IsZero(10)
R>
Спасибо, метод в нужном классе я нашел, но проблема осталась
Ситуация такая — я пытаюсь вызвать этот extension метод с помощью лямбда выражений (метод Expression.Call( instance, method, arguments )), но получается, что instance у меня нет, а есть статический класс. Каким образом можно передать статический класс в Expression? Может быть, есть какие-то рекомендации как вообще работать с extension-методами в Expression?
Здравствуйте, Johny B.Good, Вы писали:
JBG>Спасибо, метод в нужном классе я нашел, но проблема осталась Ситуация такая — я пытаюсь вызвать этот extension метод с помощью лямбда выражений (метод Expression.Call( instance, method, arguments )), но получается, что instance у меня нет, а есть статический класс. Каким образом можно передать статический класс в Expression?
using System;
using System.Linq.Expressions;
static class Program
{
static void Foo(this int x, string y){}
static void Main()
{
Expression<Action> exp = () => 1.Foo(""); // и посмотреть, что получилось
}
}