Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/mono/mono-addins.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'Mono.Addins/Mono.Addins/RuntimeAddin.cs')
-rw-r--r--Mono.Addins/Mono.Addins/RuntimeAddin.cs56
1 files changed, 27 insertions, 29 deletions
diff --git a/Mono.Addins/Mono.Addins/RuntimeAddin.cs b/Mono.Addins/Mono.Addins/RuntimeAddin.cs
index 9b05ba2..abbbf1f 100644
--- a/Mono.Addins/Mono.Addins/RuntimeAddin.cs
+++ b/Mono.Addins/Mono.Addins/RuntimeAddin.cs
@@ -49,27 +49,37 @@ namespace Mono.Addins
/// </summary>
public class RuntimeAddin
{
- string id;
- string baseDirectory;
+ readonly string id;
+ readonly string baseDirectory;
+ readonly Addin ainfo;
+ readonly RuntimeAddin parentAddin;
+ readonly AddinEngine addinEngine;
+ readonly ModuleDescription module;
+
string privatePath;
- Addin ainfo;
- RuntimeAddin parentAddin;
Dictionary<string, Assembly> loadedAssemblies = new Dictionary<string, Assembly>();
bool fullyLoadedAssemblies;
-
- RuntimeAddin[] depAddins;
- ResourceManager[] resourceManagers;
+
+ RuntimeAddin [] depAddins;
+ ResourceManager [] resourceManagers;
AddinLocalizer localizer;
- ModuleDescription module;
- AddinEngine addinEngine;
ExtensionNodeDescription localizerDescription;
- internal RuntimeAddin (AddinEngine addinEngine)
+ internal RuntimeAddin (AddinEngine addinEngine, Addin iad)
{
this.addinEngine = addinEngine;
+
+ ainfo = iad;
+
+ AddinDescription description = iad.Description;
+ id = description.AddinId;
+ baseDirectory = description.BasePath;
+ module = description.MainModule;
+ module.RuntimeAddin = this;
+ localizerDescription = description.Localizer;
}
-
+
internal RuntimeAddin (AddinEngine addinEngine, RuntimeAddin parentAddin, ModuleDescription module)
{
this.addinEngine = addinEngine;
@@ -345,7 +355,7 @@ namespace Mono.Addins
foreach (var kvp in loadedAssemblies) {
var assembly = kvp.Value;
- if (string.IsNullOrEmpty (assemblyName) || assembly.FullName == assemblyName) {
+ if (string.IsNullOrEmpty (assemblyName) || assembly.GetName().Name == assemblyName) {
Type type = assembly.GetType (typeName, false);
if (type != null)
return type;
@@ -619,19 +629,6 @@ namespace Mono.Addins
return addin;
}
- internal AddinDescription Load (Addin iad)
- {
- ainfo = iad;
-
- AddinDescription description = iad.Description;
- id = description.AddinId;
- baseDirectory = description.BasePath;
- module = description.MainModule;
- module.RuntimeAddin = this;
- localizerDescription = description.Localizer;
- return description;
- }
-
AddinLocalizer LoadLocalizer ()
{
if (localizerDescription != null) {
@@ -723,9 +720,9 @@ namespace Mono.Addins
}
}
- internal void UnloadExtensions ()
+ internal void UnloadExtensions (ExtensionContextTransaction transaction)
{
- addinEngine.UnregisterAddinNodeSets (id);
+ addinEngine.UnregisterAddinNodeSets (transaction, id);
}
bool CheckAddinDependencies (ModuleDescription module, bool forceLoadAssemblies)
@@ -734,10 +731,11 @@ namespace Mono.Addins
AddinDependency pdep = dep as AddinDependency;
if (pdep == null)
continue;
- if (!addinEngine.IsAddinLoaded (pdep.FullAddinId))
+ var addin = addinEngine.GetAddin(pdep.FullAddinId);
+ if (addin == null)
return false;
if (forceLoadAssemblies)
- addinEngine.GetAddin (pdep.FullAddinId).EnsureAssembliesLoaded ();
+ addin.EnsureAssembliesLoaded ();
}
return true;
}