Я пытаюсь загрузить плагин, класс из загруженной сборки, в конкретный AppDomain, но хочу, чтобы мои плагины не сходили с MarshalByRefObject.Есть ли альтернатива AppDomain.CreateInstanceAndUnnrwap?
Activator.CreateInstance(t)
crashed.
Я пытаюсь загрузить плагин, класс из загруженной сборки, в конкретный AppDomain, но хочу, чтобы мои плагины не сходили с MarshalByRefObject.Есть ли альтернатива AppDomain.CreateInstanceAndUnnrwap?
Activator.CreateInstance(t)
crashed.
В MSDN, MarshalByRefObject «Разрешает доступ к объектам через границы домена приложения». «Объекты, которые не наследуются от MarshalByRefObject, неявно маршалируются по значению». И «Типы должны унаследовать от MarshalByRefObject, когда тип используется для границ домена приложения». Мне кажется, что вы застряли с MarshalByRefObject - http://msdn.microsoft.com/en-us/library/system.marshalbyrefobject.aspx
Откажитесь от вашей домашней системы плагинов и используйте вместо этого Managed Extensibility Framework.
Активатор.CreateInstance (t) разбился. Как он упал? Есть ли трассировка стека? Кодовый фрагмент того, что вы делаете? Почему альтернатива? Почему бы не исправить ошибку? – spender
@Snixtor Я не пытаюсь получить доступ к объекту через границы домена приложения. Этот домен приложения был создан с целью выделения плагинов из основного домена приложения. – lowerkey
Если вы не пытаетесь получить доступ к границам приложения, то я бы не загружал его в «конкретный appdomain», иначе вы немного привязаны к необходимости «доступа к объекту через границы домена приложения». * Правильный * (MS mandated) способ делать плагины - использовать MEF. http://msdn.microsoft.com/en-us/library/dd460648.aspx – spender