powered by simpleCommunicator - 2.0.53     © 2025 Programmizd 02
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / интерфейс
19 сообщений из 19, страница 1 из 1
интерфейс
    #39000721
sevasel
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Дико извиняюсь. Продолжаю мучить тему плагинов. В отрыве от темы плагинов..
Необходимо как-то достучаться до реализации интерфейса в .net dll.
Наружу вижу только описание самого интерфейса.
Интерфейс по идее должен иметь свою реализацию внутри dll, т.к.имеет атрибут HostSide.
...
Рейтинг: 0 / 0
интерфейс
    #39000726
Фотография Axeleron
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
sevasel,
И в чем проблема?
...
Рейтинг: 0 / 0
интерфейс
    #39000728
sevasel
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
не знаю как получить доступ к объекту, реализующему интерфейс.. куда смотреть? что читать?
...
Рейтинг: 0 / 0
интерфейс
    #39000732
sevasel
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
со стороны плагина все понятно, я сам реализую все необходимые интерфейсы, точнее классы реализуют. но как запросить посредством интерфейсов стороны хоста ЕГО функциональность?
...
Рейтинг: 0 / 0
интерфейс
    #39000738
Фотография Axeleron
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
sevasel,
Посредством доступа к свойствам и методам. Так и не понял что именно хотите...
...
Рейтинг: 0 / 0
интерфейс
    #39000741
Фотография Antonariy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
sevaselсо стороны плагина все понятно, я сам реализую все необходимые интерфейсы, точнее классы реализуют. но как запросить посредством интерфейсов стороны хоста ЕГО функциональность?хост должен передать плагину ссылку на себя через какое-нибудь свойство или метод интерфейса плагина.
...
Рейтинг: 0 / 0
интерфейс
    #39000744
Фотография Antonariy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
это

Код: c#
1.
2.
3.
4.
    public interface IBasePlugin<in TIHost>
    {
        TIHost Host { set; }
    }


или это

Код: c#
1.
2.
public IPayPluginHost Host { set; private get; }
}
...
Рейтинг: 0 / 0
интерфейс
    #39000745
sevasel
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Вот есть dll, в ней выставлен наружу интерфейс IOperDayInfo например с методами GetOperator(), GetOperDayNum() и т.д. Эта dll подключена в Resources. Как мне создать объект, класс которого реализует интерфейс IOperDayInfo? Если я не вижу какой класс его реализует, но знаю наверняка что реализация внутри dll.
...
Рейтинг: 0 / 0
интерфейс
    #39000747
sevasel
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Antonariy, да есть такое, передает при инициализации плагина. Но ведь это интерфейсная опять же ссылка., а не некоторый объект, у которого я могу этот интерфейс запросить.
...
Рейтинг: 0 / 0
интерфейс
    #39000750
Фотография buser
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
sevasel, иять... тогда рефлекшеном перебираешь все типы в сборке и ищешь реализующие нужный интерфейс... далее создаёшь инстанс через активатор и кастишь к этому интерфейсу...
...
Рейтинг: 0 / 0
интерфейс
    #39000753
Фотография Antonariy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
sevaselВот есть dll, в ней выставлен наружу интерфейс IOperDayInfo например с методами GetOperator(), GetOperDayNum() и т.д. Эта dll подключена в Resources. Как мне создать объект, класс которого реализует интерфейс IOperDayInfo? Если я не вижу какой класс его реализует, но знаю наверняка что реализация внутри dll.таки никак, нужно любым способом узнать имя класса. или рефлексией перебрать все классы и насоздавать экземпляров тех, кто поддерживает нужный интерфейс.

а что за странная постановка вопроса? как правило плагины прописываются в реестре в разделе настроек приложения-хоста, откуда хост и узнает их названия. или они могут прописываться в файле настроек.
...
Рейтинг: 0 / 0
интерфейс
    #39000757
sevasel
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
buser, спасибо за подсказку! попробую разобраться
...
Рейтинг: 0 / 0
интерфейс
    #39000762
Фотография Antonariy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
sevaselAntonariy, да есть такое, передает при инициализации плагина. Но ведь это интерфейсная опять же ссылка., а не некоторый объект, у которого я могу этот интерфейс запросить.какой "этот"? у них названия есть.

хост создает экземпляр плагина и через свойство передает себя самого, "некоторый объект" по твоей терминологии, со всеми своими интерфейсами. какого лешего еще тебе надо?
...
Рейтинг: 0 / 0
интерфейс
    #39000774
sevasel
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Antonariy, я про то, что свойство Host это интерфейсная ссылка на объект, который должен реализовывать этот (IPayPluginHost) интерфейс, но не сам объект. Я ни с чем не спорю, просто пытаюсь понять.
...
Рейтинг: 0 / 0
интерфейс
    #39000797
Фотография Antonariy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
sevaselэто интерфейсная ссылка на объект ... но не сам объект.вообще-то это одно и тоже.
...
Рейтинг: 0 / 0
интерфейс
    #39000800
Фотография Antonariy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
нет никакой разницы между "экземпляром класса", "объектом" или "ссылкой на объект", будь она хоть трижды интерфейсной.
...
Рейтинг: 0 / 0
интерфейс
    #39000807
sevasel
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Antonariy, большое спасибо
...
Рейтинг: 0 / 0
интерфейс
    #39000808
Фотография Antonariy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
может так понятней будет?

Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
Public Interface IBasePlugin(Of  In TIHost)
	WriteOnly Property Host() As TIHost
End Interface

Public Interface IPayPlugin
	Inherits IBasePlugin(Of IPayPluginHost)
	Inherits IPluginPayService
End Interface

Public NotInheritable Class PayPlugin
	Implements IPayPlugin

	Private m_Host As IPayPluginHost

	Public Property Host() As IPayPluginHost Implements IBasePlugin(Of IPayPluginHost).Host
		Private Get
			Return m_Host
		End Get
		Set
			m_Host = Value
		End Set
	End Property
End Class

я заметил, что семантика сидиеза не облегчает мозгу усвоение принципов ООП.
...
Рейтинг: 0 / 0
интерфейс
    #39000827
Фотография Изопропил
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Antonariyя заметил, что семантика сидиеза не облегчает мозгу усвоение принципов ООП.
барсик - это вообще вынос мозга
...
Рейтинг: 0 / 0
19 сообщений из 19, страница 1 из 1
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / интерфейс
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]