Форум программистов, компьютерный форум, киберфорум
Наши страницы
C# .NET
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.60/5: Рейтинг темы: голосов - 5, средняя оценка - 4.60
llFreeManll
23 / 23 / 9
Регистрация: 27.11.2011
Сообщений: 272
Завершенные тесты: 1
1

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

28.06.2015, 16:04. Просмотров 847. Ответов 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
Ответы с готовыми решениями:

Html Agility Pack. Как получить код только одного класса?
как я уже понял, что лучше всего будет использовать html agility pack, но пока...

Как в случае с Dependency Injection внедрять отдельный экземпляр некоторого класса только лишь для одного другого класса
Здравствуйте, пытаюсь понять как же всё таки правильно использовать Dependency...

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

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

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

4
nedel
603 / 597 / 351
Регистрация: 09.04.2014
Сообщений: 1,425
Завершенные тесты: 1
28.06.2015, 18:22 2
BindingFlags.DeclaredOnly
0
insite2012
Модератор
Эксперт .NET
4858 / 3813 / 1094
Регистрация: 12.10.2013
Сообщений: 11,096
Записей в блоге: 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
4858 / 3813 / 1094
Регистрация: 12.10.2013
Сообщений: 11,096
Записей в блоге: 2
28.06.2015, 18:47 4
Странно... Наверное, я просто не умею пользоваться этими флагами, но и при добавлении ссылки ничего не возвращает...
0
Миниатюры
Получить только пользовательские методы из класса  
insite2012
Модератор
Эксперт .NET
4858 / 3813 / 1094
Регистрация: 12.10.2013
Сообщений: 11,096
Записей в блоге: 2
28.06.2015, 18:55 5
Лучший ответ Сообщение было отмечено llFreeManll как решение

Решение

Получилось вот таким образом. Так работает)))
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

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

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

Как получить методы класса?
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));...


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

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

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