Форум программистов, компьютерный форум, киберфорум
Наши страницы

C# .NET

Войти
Регистрация
Восстановить пароль
 
llFreeManll
22 / 22 / 6
Регистрация: 27.11.2011
Сообщений: 272
Завершенные тесты: 1
#1

Получить только пользовательские методы из класса - C#

28.06.2015, 16:04. Просмотров 209. Ответов 4
Метки нет (Все метки)

Добрых времени суток. Есть класс в котром некое количество методов, через рефлексию получаю все паблик методы из класса, но вместе с ними мне возвращаются и ToString, Equals, GetHashCode, GetType, а мне этого не нужно.
Пробовал сделать свои методы приватными, а потом указать что нужно получать все не приватные методы, но мне вообще ничего не вернулось.
C#
1
t.GetMethods(BindingFlags.NonPublic)
0
Лучшие ответы (1)
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
28.06.2015, 16:04
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Получить только пользовательские методы из класса (C#):

Html Agility Pack. Как получить код только одного класса? - C#
как я уже понял, что лучше всего будет использовать html agility pack, но пока не понимаю как именно. у меня есть код веб страницы, мне...

Как хранятся методы класса в управляемой куче? - .NET
Добрый день. Как хранятся методы класса в управляемой куче?

Как в производном классе спрятать методы из базового класса? - .NET
Как в производном классе, спрятать методы из базового класса. То есть при создании экземпляра класса производного класса, чтобы некоторые...

Используя стандартные методы класса String и структуры Char написать программу - C#
Используя стандартные методы класса String и структуры Char написать программу, которая после введения некоторого предложения, определяет...

Как получить методы с определённым атрибутом? - C#
Подскажите пожалуйста как из сборки(длл) вытянуть методы с атрибутом «тест» ? Методы я достал, а как дальше не раздупляю.. Вот скрин. ...

Как в Button17 объявить делегат на методы класса static string toString (Complex A) - C#
Доврый день! using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using...

4
nedel
574 / 574 / 250
Регистрация: 09.04.2014
Сообщений: 1,356
Завершенные тесты: 1
28.06.2015, 18:22 #2
BindingFlags.DeclaredOnly
0
insite2012
Модератор
Эксперт .NET
4619 / 3571 / 870
Регистрация: 12.10.2013
Сообщений: 10,542
Записей в блоге: 2
28.06.2015, 18:43 #3
Цитата Сообщение от nedel Посмотреть сообщение
BindingFlags.DeclaredOnly
Странно, но при чистой рефлексии (через Assembly, .NET 4.0) у меня и так ничего не возвращается... Получилось только так.
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
 
using System.IO;
using System.Reflection;
 
namespace ConsoleApplication4 {
    class Program {
        static void Main(string[] args) {
            Assembly asm = Assembly.Load(File.ReadAllBytes("ClassLibrary1.dll"));
            Type t = asm.GetType("ClassLibrary1.Class1");
            MethodInfo[] methods = t.GetMethods().Where(mi => mi.DeclaringType == t).ToArray(); ;
        }
    }
}
0
insite2012
Модератор
Эксперт .NET
4619 / 3571 / 870
Регистрация: 12.10.2013
Сообщений: 10,542
Записей в блоге: 2
28.06.2015, 18:47 #4
Странно... Наверное, я просто не умею пользоваться этими флагами, но и при добавлении ссылки ничего не возвращает...
0
Миниатюры
Получить только пользовательские методы из класса  
insite2012
Модератор
Эксперт .NET
4619 / 3571 / 870
Регистрация: 12.10.2013
Сообщений: 10,542
Записей в блоге: 2
28.06.2015, 18:55 #5
Лучший ответ Сообщение было отмечено автором темы, экспертом или модератором как ответ
Получилось вот таким образом. Так работает)))
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
 
using System.IO;
using System.Reflection;
 
namespace ConsoleApplication4 {
    class Program {
        static void Main(string[] args) {
            Assembly asm = Assembly.Load(File.ReadAllBytes("ClassLibrary1.dll"));
            Type t = asm.GetType("ClassLibrary1.Class1");
            MethodInfo[] methods = t.GetMethods(BindingFlags.Public|BindingFlags.Instance|BindingFlags.DeclaredOnly);
        }
    }
}
Причина нашлась на MSDN
Необходимо задать модификаторы Instance или Static вместе с модификатором Public или NonPublic, в обратном случае никакие члены не будут возвращены.
1
28.06.2015, 18:55
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
28.06.2015, 18:55
Привет! Вот еще темы с ответами:

Как получить методы класса? - Java SE
BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); System.out.println("Enter a class name "); String name =...

Пользовательские методы - C#
Надо описать два метода, которые реализуют один и тот же алгоритм (решение квадратного уравнения). Первый метод возвращает результат в...

Пользовательские методы - C#
static string ZnakiZodiaca(int day, int mon) { if (day <= 31 && mon <= 12) { switch...

Пользовательские методы (задача на нахождение суммы нечетных чисел) - C#
Написал я программу для нахождения суммы нечетных чисел, находящихся в строке, вот она: class Program { static void...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.