Форум программистов, компьютерный форум, киберфорум
C# .NET
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.91/11: Рейтинг темы: голосов - 11, средняя оценка - 4.91
1 / 1 / 0
Регистрация: 11.10.2015
Сообщений: 33
1
.NET 4.x

Одновременное связывание нескольких библиотек

30.05.2017, 15:54. Показов 2141. Ответов 7

Author24 — интернет-сервис помощи студентам
даров всем снов) мине нужно осуществить одновременное подключение и связывание нескольких библиотек. т.е я одновременно использую функции одной библиотеки, и другой. вот как я решил поступить:
я написал библиотеку классов. нестатических, чтобы создать два их экземпляра, соответственно и два экземпляра библиотек. первая библиотека отлично проходит, ее тип превращается в объект. но при подключении второй библиотеки тип превращаться в объект не хочет. вот как все это выглядит:
Кликните здесь для просмотра всего текста

C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
 public class Libber
    {
        public Assembly Library;
        public Type Classes;
        public object Piece;
        public Libber(string filepath, string entrypoint)
        {
            Library = Assembly.LoadFrom(filepath);
            Classes = Library.GetType(entrypoint, true);
        }
        public object ExMethod(string MethodName)
        {
            MethodInfo Method = Classes.GetMethod(MethodName);
            Piece = Activator.CreateInstance(Classes);
            return Method.Invoke(Piece, null);
        }
        public object ExMethod(string MethodName, string Parameters)
        {
            object[] Params = Parameters.Split(',');
            Piece = Activator.CreateInstance(Classes);
            MethodInfo Method = Classes.GetMethod(MethodName);
            return Method.Invoke(Piece, Params);
        }
    }

выдает System.MissingMethodException: "Невозможно создать абстрактный класс.".
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
30.05.2017, 15:54
Ответы с готовыми решениями:

Одновременное проигрывание нескольких звуков
Народ, выручайте, ума не приложу что можно сделать. Переписываю свою игрушку с flash, там на...

IBM DB2 запрос на связывание нескольких таблиц
Всем привет! Можете подсказать, как написать запрос, который связывает несколько таблиц ? ...

Сборка нескольких библиотек в одну
Всем доброго времени! Есть библиотека, которая внутри себя использует другую библиотеку. Как...

Одновременное перемещение нескольких объектов
Всем очередной привет )) Помогите пожалуйста в небольшой (для кого как :D) проблеме. У меня на...

7
Администратор
Эксперт .NET
17027 / 13379 / 5218
Регистрация: 17.03.2014
Сообщений: 27,369
Записей в блоге: 1
30.05.2017, 16:19 2
ZhenyaZERO, в ошибке всё ясно сказано - "Невозможно создать абстрактный класс."

Цитата Сообщение от ZhenyaZERO Посмотреть сообщение
мине нужно осуществить одновременное подключение и связывание нескольких библиотек. т.е я одновременно использую функции одной библиотеки, и другой. вот как я решил поступить
Зачем здесь reflection? Почему нельзя подключить библиотеки через reference?
0
1 / 1 / 0
Регистрация: 11.10.2015
Сообщений: 33
30.05.2017, 16:39  [ТС] 3
Цитата Сообщение от OwenGlendower Посмотреть сообщение
в ошибке всё ясно сказано
То, что класс создать не может, это понятно. Почему не может?
Цитата Сообщение от OwenGlendower Посмотреть сообщение
Почему нельзя подключить библиотеки через reference?
Это не библиотеки, а аддоны, т.е подключать надо динамически.
0
Администратор
Эксперт .NET
17027 / 13379 / 5218
Регистрация: 17.03.2014
Сообщений: 27,369
Записей в блоге: 1
30.05.2017, 17:19 4
ZhenyaZERO, потому что правила языка запрещают создание экземпляров абстрактных классов. Как напрямую так и через reflection.
C#
1
2
3
4
5
6
abstract class Base { }
...
Base b = new Base(); // Ошибка компиляции "Cannot create an instance of the abstract class"
...
Type t = typeof(Base);
Base b = (Base)Activator.CreateInstance(t); // Исключение MissingMethodException "Cannot create an abstract class"
0
1 / 1 / 0
Регистрация: 11.10.2015
Сообщений: 33
31.05.2017, 09:31  [ТС] 5
Цитата Сообщение от OwenGlendower Посмотреть сообщение
запрещают создание экземпляров абстрактных классов
Так весь вопрос в том, почему нет принял этот класс за абстрактный, если он статический?
0
Эксперт .NET
6452 / 4053 / 1599
Регистрация: 09.05.2015
Сообщений: 9,487
31.05.2017, 09:34 6
Цитата Сообщение от ZhenyaZERO Посмотреть сообщение
Так весь вопрос в том, почему нет принял этот класс за абстрактный, если он статический?
А зачем создавать экземпляр статического класса? Как-то не очень идея по моему...
0
1 / 1 / 0
Регистрация: 11.10.2015
Сообщений: 33
31.05.2017, 10:06  [ТС] 7
Цитата Сообщение от Someone007 Посмотреть сообщение
зачем
А как тогда инвокать функции? С первой библиотекой(она тоже статическая) все отлично работает.
Забыл сказать, VS выводит меня именно на
C#
1
return Method.Invoke(Piece, null);
0
Администратор
Эксперт .NET
17027 / 13379 / 5218
Регистрация: 17.03.2014
Сообщений: 27,369
Записей в блоге: 1
31.05.2017, 13:48 8
Лучший ответ Сообщение было отмечено ZhenyaZERO как решение

Решение

ZhenyaZERO, к static членам нужно обращаться без создания экземляра.
C#
1
2
3
4
5
6
public object ExMethod(string MethodName)
{
    MethodInfo Method = Classes.GetMethod(MethodName);
    Piece = Method.IsStatic ? null : Activator.CreateInstance(Classes); 
    return Method.Invoke(Piece, null);
}
1
31.05.2017, 13:48
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
31.05.2017, 13:48
Помогаю со студенческими работами здесь

Одновременное обращение к ApplicationContext в классе Singleton из нескольких потоков
Возникла проблема, в том что _context уже используется. ApplicationContext _context...

Одновременное чтение и обработка данных из нескольких файлов, не помещающихся в память
Добрый день, форумчане. Прошу помощи в решении задачи. Задача состоит в том, что нужно...

Связывание библиотек
Допустим есть решение из 4 проектов- Common, A , B и Program. Common содержит некие общие...

Одновременное перемещение нескольких форм
Доброго времени суток. У меня такой вопрос, точнее проблема. У меня есть одна главная форма и...


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

Или воспользуйтесь поиском по форуму:
8
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru