Получить MethodInfo для метода расширения - PullRequest
4 голосов
/ 12 июня 2009

Я не могу получить информацию о методе для метода расширения, как я подозреваю. Что не так?

_toStringMethod = typeof(ObjectExtensions).GetMethod("TryToString",
    BindingFlags.Public | BindingFlags.Static);

Ответы [ 3 ]

5 голосов
/ 12 июня 2009

у меня работает:

using System;
using System.Reflection;

public static class ObjectExtensions
{
    public static string TryToString(this object x)
    {
        // Just guessing...
        return x == null ? "" : x.ToString();
    }
}

class Test
{
    static void Main()
    {
        var method = typeof(ObjectExtensions).GetMethod
            ("TryToString", BindingFlags.Public | BindingFlags.Static);
        // Prints System.String TryToString(System.Object)
        Console.WriteLine(method);
    }
}

Можете ли вы привести аналогичный короткий, но полный пример, который не удался?

2 голосов
/ 12 июня 2009

У меня работает. Просто проверьте правильность класса, имени и модификатора вашего метода.

Как примечание, нет причин, по которым он не должен работать ни при каких обстоятельствах. Методы расширения по-прежнему являются «нормальными» методами в том смысле, что они принадлежат статическому классу, в котором определены. Отличается только способ доступа к ним (хотя, конечно, вы можете и к ним нормально обращаться).

0 голосов
/ 12 февраля 2018

Мне не удалось получить метод расширения для моего кода Это был просто конфликт пространства имен, который вместо моего класса Extension Он использовал класс Extension EntityFramework, поэтому я должен явно ввести его

typeof(MyAppNamespace.Extensions).GetMethod(...)

вместо:

typeof(Extensions).GetMethod(...)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...