Здравствуйте, Capitan_Blood, Вы писали:
AppDomain.CurrentDomain.AssemblyResolve += new ResolveEventHandler(CurrentDomain_AssemblyResolve);
... << RSDN@Home 1.2.0 alpha 4 rev. 1090>>
Здравствуйте, Capitan_Blood, Вы писали:
C_B>бьюсь головой уже несколько дней, ничего пока не получилось, поэтому обращаюсь за советом)
Сначала значит
AppDomainSetup domainSetup = new AppDomainSetup();
а потом значит
domainSetup = AppDomain.CurrentDomain.SetupInformation;
Вот.
Здравствуйте, Spiceman, Вы писали:
S>Здравствуйте, Capitan_Blood, Вы писали:
C_B>>бьюсь головой уже несколько дней, ничего пока не получилось, поэтому обращаюсь за советом)
S>Сначала значит
S>S>AppDomainSetup domainSetup = new AppDomainSetup();
S>
S>а потом значит
S>S>domainSetup = AppDomain.CurrentDomain.SetupInformation;
S>
S>Вот.
Блин, сумбурно получилось. Короче, вы сначала создаете экземпляр AppDomainSetup, потом настраиваете его, а потом заменяете зачем-то настройками текущего домена.
Здравствуйте, Spiceman, Вы писали:
S>Здравствуйте, Spiceman, Вы писали:
S>>Здравствуйте, Capitan_Blood, Вы писали:
C_B>>>бьюсь головой уже несколько дней, ничего пока не получилось, поэтому обращаюсь за советом)
S>>Сначала значит
S>>S>>AppDomainSetup domainSetup = new AppDomainSetup();
S>>
S>>а потом значит
S>>S>>domainSetup = AppDomain.CurrentDomain.SetupInformation;
S>>
S>>Вот.
S>Блин, сумбурно получилось. Короче, вы сначала создаете экземпляр AppDomainSetup, потом настраиваете его, а потом заменяете зачем-то настройками текущего домена.
упс, это просто код не тот вставил.. та мнету строчки приравнивания в общем)
ну данный вопрос снимается, однако встал новый вопрос:
я смог загрузить сборку в новый домен с помощью DoCallBack
pluginDomain.SetData("Plugin_AssemblyName", name);
pluginDomain.SetData("Plugin_application", application);
pluginDomain.DoCallBack(new CrossAppDomainDelegate(PluginManager.Load));
int pluginCount = (Int32)(pluginDomain.GetData("Plugin_TotalPlugin"));
for (int i = 0; i < pluginCount; i++)
{
Common.Plugin.BasePlugin plugin = (Common.Plugin.BasePlugin)pluginDomain.GetData("Plugin_Plugin" + i.ToString());
loadedPlugin.Add(plugin.Name, plugin);
}
...
private static Load()
{
int typeCount = 0;
String dName = (String)(AppDomain.CurrentDomain.GetData("Plugin_AssemblyName"));
Common.Plugin.IMainApp dApplication = (Common.Plugin.IMainApp)pluginDomain.GetData("Plugin_application");
Assembly assembly = Assembly.LoadFile(dName);
foreach (Type type in assembly.GetTypes())
{
if (type.BaseType == typeof(Common.Plugin.BasePlugin))
{
Common.Plugin.BasePlugin plugin = (Common.Plugin.BasePlugin)Activator.CreateInstance(type);
plugin.Init(dApplication);
foreach (Common.Plugin.Command command in plugin.Commands)
avalibleCommand.Add(command.Name, command);
AppDomain.CurrentDomain.SetData("Plugin_Plugin" + typeCount.ToString(), plugin);
typeCount++;
}
}
AppDomain.CurrentDomain.SetData("Plugin_TotalPlugin", typeCount);
}
теперь имеем ошибку
{System.Runtime.Serialization.SerializationException: Type is not resolved for member 'Test.TestPlugin,Test, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null'.
Для справки:
имеется следующая иерархия:
abstarct BasePlugin;
TestPlugin: BasePlugin
все классы помечены как серелизуемые
Здравствуйте, Capitan_Blood, Вы писали:
C_B>теперь имеем ошибку
C_B>{System.Runtime.Serialization.SerializationException: Type is not resolved for member 'Test.TestPlugin,Test, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null'.
C_B>Для справки:
C_B>имеется следующая иерархия:
C_B>abstarct BasePlugin;
C_B>TestPlugin: BasePlugin
C_B>все классы помечены как серелизуемые
Попробуй BasePlugin отнаследовать от MarshalByRefObject.
... << RSDN@Home 1.2.0 alpha 4 rev. 1083>>