Форум программистов, компьютерный форум, киберфорум
C# .NET
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.64/11: Рейтинг темы: голосов - 11, средняя оценка - 4.64
 Аватар для skilllab
296 / 236 / 58
Регистрация: 03.02.2011
Сообщений: 2,051
Записей в блоге: 1
.NET 3.x

Ошибка при вызове метода (позднее связывание)

16.03.2013, 12:28. Показов 2536. Ответов 15
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Помогите пожалуйста разобраться с ошибкой вызова:
Миниатюры
Ошибка при вызове метода (позднее связывание)  
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
16.03.2013, 12:28
Ответы с готовыми решениями:

Ошибка при повторном вызове метода Clipboard.SetDataObject
Необходимо программно отправить текст в текстовое поле стороннего приложения. Задавал вопрос в разделе C++ WinAPI...

Позднее связывание с неуправляемым кодом
Можно ли осуществить позднее связывание с неуправляемым кодом ? Собственно и весь вопрос.

Открытие файла excel позднее связывание
Добрый день всем. Такой вопрос. Делаю по этому тьюториалу - http://www.gotdotnet.ru/blogs/rovshan/6495/ Пытаюсь открыть книгу......

15
Эксперт .NET
 Аватар для kolorotur
17823 / 12973 / 3382
Регистрация: 17.09.2011
Сообщений: 21,261
16.03.2013, 12:29
Пожалуйста, вот шаги для решения проблемы:
0
 Аватар для skilllab
296 / 236 / 58
Регистрация: 03.02.2011
Сообщений: 2,051
Записей в блоге: 1
16.03.2013, 12:33  [ТС]
kolorotur, ???
Миниатюры
Ошибка при вызове метода (позднее связывание)  
0
Эксперт .NET
 Аватар для kolorotur
17823 / 12973 / 3382
Регистрация: 17.09.2011
Сообщений: 21,261
16.03.2013, 12:46
Цитата Сообщение от skilllab Посмотреть сообщение
kolorotur, ???
Ну я ответил до того, как вы картинку подгрузили

Вы достаете информацию о свойстве, а вызвать его пытаетесь как метод.
0
 Аватар для skilllab
296 / 236 / 58
Регистрация: 03.02.2011
Сообщений: 2,051
Записей в блоге: 1
16.03.2013, 13:04  [ТС]
Не понял.
Есть запущенный процесс
C#
1
2
object myProc
Type progType = myProc.GetType();
Есть библиотека
C#
1
Solid = Assembly.LoadFrom(pathToSWASSY);
Я хочу вызвать члена библиотеки для запущенного процесса. Что делаю не так?

Добавлено через 8 минут
Цитата Сообщение от kolorotur Посмотреть сообщение
Ну я ответил до того, как вы картинку подгрузили
смешно.
0
Эксперт .NET
 Аватар для kolorotur
17823 / 12973 / 3382
Регистрация: 17.09.2011
Сообщений: 21,261
16.03.2013, 13:07
Цитата Сообщение от skilllab Посмотреть сообщение
Я хочу вызвать члена библиотеки для запущенного процесса. Что делаю не так?
То есть хотите сделать так, чтобы этот член вызвался в стороннем процессе?
Или просто хотите подгрузить ту же либу, которую использует сторонний процесс, и вызвать в ней какой-то метод?

Цитата Сообщение от skilllab Посмотреть сообщение
смешно.
Отож.
0
 Аватар для skilllab
296 / 236 / 58
Регистрация: 03.02.2011
Сообщений: 2,051
Записей в блоге: 1
16.03.2013, 13:09  [ТС]
Цитата Сообщение от kolorotur Посмотреть сообщение
Или просто хотите подгрузить ту же либу, которую использует сторонний процесс, и вызвать в ней какой-то метод?
Именно!
Цитата Сообщение от skilllab Посмотреть сообщение
Ошибка при вызове метода (позднее связывание)
0
Эксперт .NET
 Аватар для kolorotur
17823 / 12973 / 3382
Регистрация: 17.09.2011
Сообщений: 21,261
16.03.2013, 13:33
Тогда, наверное, стоит использовать GetMethod, а не GetProperty.
Property — это все-таки свойство, можно получить его значение или присвоить ему другое значение.
В этом случае нужно использовать методы GetValue/SetValue, но они требуют ссылку на экземпляр (если поле не статическое).
0
 Аватар для skilllab
296 / 236 / 58
Регистрация: 03.02.2011
Сообщений: 2,051
Записей в блоге: 1
16.03.2013, 13:53  [ТС]
Цитата Сообщение от kolorotur Посмотреть сообщение
нужно использовать методы GetValue/SetValue
чтобы их использовать, нужно получить Property, чего у меня и не получается.

У члена ActiveDoc в Solid есть только метод Get
Миниатюры
Ошибка при вызове метода (позднее связывание)  
0
Заблокирован
16.03.2013, 13:55
Цитата Сообщение от skilllab Посмотреть сообщение
Не понял.
Есть запущенный процесс
C#
1
2
object myProc
Type progType = myProc.GetType();
Есть библиотека
C#
1
Solid = Assembly.LoadFrom(pathToSWASSY);
Я хочу вызвать члена библиотеки для запущенного процесса. Что делаю не так?

Добавлено через 8 минут

смешно.
Кроме автора наверно никто не знает о чем тема. Сначала пишет про позднее связывание, потом про вызов объекта из библиотеки. для конкретного процесса, - напиши в конструкторе класса той библиотеки ссылку на процесс и вот ты уже вызвал объект для конкретного процесса )))
0
Эксперт .NET
 Аватар для kolorotur
17823 / 12973 / 3382
Регистрация: 17.09.2011
Сообщений: 21,261
16.03.2013, 13:57
Цитата Сообщение от skilllab Посмотреть сообщение
У члена ActiveDoc в Solid есть только метод Get
Так все-таки свойство.

Цитата Сообщение от skilllab Посмотреть сообщение
чтобы их использовать, нужно получить Property, чего у меня и не получается.
А чтобы получить значение этого свойства, вам нужно создать экземпляр этого класса.
Без экземпляра не существует и значения свойства.
1
 Аватар для skilllab
296 / 236 / 58
Регистрация: 03.02.2011
Сообщений: 2,051
Записей в блоге: 1
16.03.2013, 14:05  [ТС]
Urety, есть программа-объект-процесс. Хочу отвязать статичное использование DLL (меняются версии этих DLL для программы). Для этого хочу использовать позднее связывание.

Изначально код выглядит так:
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
using TargetDLL.Interop.App;
using TargetDLL.Interop.Doc;
public partial class Form1 : Form
    {
        App MyApp;
        Doc MyDoc;
        public Form1()
        {
            InitializeComponent();
            try
            {
                MyApp = (App)Marshal.GetActiveObject("App.Application"); 
            }
            if (MyApp.IActiveDoc == null)
            {
                MessageBox.Show("Open part");
                System.Environment.Exit(-1);
            }
            MyDoc = MyApp.IActiveDoc2;
Добавлено через 1 минуту
Цитата Сообщение от Urety Посмотреть сообщение
напиши в конструкторе класса той библиотеки
Позвоню разработчикам)))

Добавлено через 1 минуту
Цитата Сообщение от kolorotur Посмотреть сообщение
вам нужно создать экземпляр этого класса.
Можете показать как это делается? Спасибо.
Цитата Сообщение от Urety Посмотреть сообщение
про позднее связывание, потом про вызов объекта
а для чего ещё нужно позднее связывание?!?
0
Заблокирован
16.03.2013, 14:09
Похоже понял, по скриншоту.
Автор пытается вызвать свойство объекта без создания объекта.
0
 Аватар для skilllab
296 / 236 / 58
Регистрация: 03.02.2011
Сообщений: 2,051
Записей в блоге: 1
16.03.2013, 14:11  [ТС]
kolorotur, кажется начинаю понимать технологию. Нужны ещё классы и интерфейсы от Dll?

Добавлено через 1 минуту
Цитата Сообщение от Urety Посмотреть сообщение
Так и не понял,
Цитата Сообщение от Urety Посмотреть сообщение
Похоже понял,
0
Заблокирован
16.03.2013, 14:40
Для смены версий подключаемых библиотек, лучше использовать конфигурационный файл приложения, политики издателя, если gac (разделимая библиотека), придерживаться соглашения о номерах версий (посл два числа для совмест. библ, первые два для несовмест.).
В моем понимании позднее связывание, это проверка и вызов методов на этапе выполнения, а не получение объекта из библиотеки, в процессе работы программы. Может я полностью не вник в суть темы, ну и ладно.

Если надо подгрузить какую либо библиотеку вызвать метод объекта в ней и выгрузить то можно так, но думаю вам врядли поможет:
В библиотеке:
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
 
namespace ClassLibrary1
{
    public class Class1:MarshalByRefObject
    {
        public string InvokedMethod() { return "Invoke"; }
    }
}
В основном коде:
C#
1
2
3
4
5
6
7
8
   //Если надо подгрузить библиотеку вызвать метод ее класса и отгрузить назад
            AppDomain classDomain = AppDomain.CreateDomain("Lib");
            var obj = classDomain.CreateInstanceAndUnwrap("ClassLibrary1", "ClassLibrary1.Class1");
            ClassLibrary1.Class1 res = (ClassLibrary1.Class1)obj;
 
            String result = res.InvokedMethod(); //result=invoke;
 
            AppDomain.Unload(classDomain); //удаляем домен с библиотекой
1
 Аватар для skilllab
296 / 236 / 58
Регистрация: 03.02.2011
Сообщений: 2,051
Записей в блоге: 1
16.03.2013, 15:47  [ТС]
Цитата Сообщение от Urety Посмотреть сообщение
если gac
dll не помещаются в GAC у программы-цели. А так понял. Буду разбираться.

Добавлено через 1 час 2 минуты
Цитата Сообщение от kolorotur Посмотреть сообщение
вам нужно создать экземпляр этого класса.
Разобрался!!)))
C#
1
2
3
            Type progType = Type.GetTypeFromProgID("App.Application");
            object myInstance = Activator.CreateInstance(progType);
            var myActiveDoc = progType.InvokeMember("ActiveDoc", BindingFlags.GetProperty, null, myInstance, null);
И, по-ходу, dll (в которой описаны все методы, классы..) тут совсем ни при чем.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
16.03.2013, 15:47
Помогаю со студенческими работами здесь

При вызове метода из другого файла ошибка "The type initializer for 'Openxls' threw an exception"
Хелп плиз! Прога работала и вдруг перестала при вызове метода из другого файла пишет The type initializer for 'Openxls' threw an...

Позднее связывание. Получить конкретное окно приложения
Здравствуйте все:) У меня такая проблема: пишу на c# библиотеку в которой содержится форма. На форме есть дерево, элементы которого...

Позднее связывание; Точность знакового вещественного числа
Две проблемы: Используя позднее связывание, как получить из конструктора значение числового типа? ref и out в конструкторе ничего не...

Можно ли в .Net использовать позднее связывание к generic-классам
Всем привет. Подскажите плиз, можно ли в .Net использовать позднее связывание к generic-классам? Собственно проблема такая: Имеется...

Большое потребление памяти при вызове метода
Наблюдаю очень странное поведение Visual Studio 2008. В моём проекте на C# есть один метод, который содержит большое число кода (циклы,...


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

Или воспользуйтесь поиском по форуму:
16
Ответ Создать тему
Новые блоги и статьи
Модель заражения группы наркоманов
alhaos 17.04.2026
Условия задачи сформулированы тут Суть: - Группа наркоманов из 10 человек. - Только один инфицирован ВИЧ. - Колются одной иглой. - Колются раз в день. - Колются последовательно через. . .
Мысли в слух. Про "навсегда".
kumehtar 16.04.2026
Подумалось тут, что наверное очень глупо использовать во всяких своих установках понятие "навсегда". Это очень сильное понятие, и я только начинаю понимать край его смысла, не смотря на то что давно. . .
My Business CRM
MaGz GoLd 16.04.2026
Всем привет, недавно возникла потребность создать CRM, для личных нужд. Собственно программа предоставляет из себя базу данных клиентов, в которой можно фиксировать звонки, стадии сделки, а также. . .
Знаешь почему 90% людей редко бывают счастливыми?
kumehtar 14.04.2026
Потому что они ждут. Ждут выходных, ждут отпуска, ждут удачного момента. . . а удачный момент так и не приходит.
Фиксация колонок в отчете СКД
Maks 14.04.2026
Фиксация колонок в СКД отчета типа Таблица. Задача: зафиксировать три левых колонки в отчете. Процедура ПриКомпоновкеРезультата(ДокументРезультат, ДанныеРасшифровки, СтандартнаяОбработка) / / . . .
Настройки VS Code
Loafer 13.04.2026
{ "cmake. configureOnOpen": false, "diffEditor. ignoreTrimWhitespace": true, "editor. guides. bracketPairs": "active", "extensions. ignoreRecommendations": true, . . .
Оптимизация кода на разграничение прав доступа к элементам формы
Maks 13.04.2026
Алгоритм из решения ниже реализован на нетиповом документе, разработанного в конфигурации КА2. Задачи, как таковой, поставлено не было, проделанное ниже исключительно моя инициатива. Было так:. . .
Контроль заполнения и очистка дат в зависимости от значения перечислений
Maks 12.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеПерсонала", разработанного в конфигурации КА2. Задача: реализовать контроль корректности заполнения дат назначения. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru