From c1e7352d75b62b6c97e79c4fdb37b9493aba697a Mon Sep 17 00:00:00 2001 From: Melanie Thielker Date: Sat, 9 May 2009 02:49:55 +0000 Subject: Add the asset service connectors and sample config. READ WARNINGS!!! --- OpenSim/Servers/Base/ServerUtils.cs | 35 ++++++++++++++++++++++++++++++++++- 1 file changed, 34 insertions(+), 1 deletion(-) (limited to 'OpenSim/Servers/Base/ServerUtils.cs') diff --git a/OpenSim/Servers/Base/ServerUtils.cs b/OpenSim/Servers/Base/ServerUtils.cs index 58d2b2b..4e8f472 100644 --- a/OpenSim/Servers/Base/ServerUtils.cs +++ b/OpenSim/Servers/Base/ServerUtils.cs @@ -27,11 +27,12 @@ using System; using System.IO; +using System.Reflection; using System.Xml; using System.Xml.Serialization; using System.Text; -namespace OpenSim.Servers.AssetServer +namespace OpenSim.Servers.Base { public static class ServerUtils { @@ -92,5 +93,37 @@ namespace OpenSim.Servers.AssetServer return ret; } + + public static T LoadPlugin(string dllName, Object[] args) where T:class + { + string interfaceName = typeof(T).ToString(); + + try + { + Assembly pluginAssembly = Assembly.LoadFrom(dllName); + + foreach (Type pluginType in pluginAssembly.GetTypes()) + { + if (pluginType.IsPublic) + { + Type typeInterface = + pluginType.GetInterface(interfaceName, true); + if (typeInterface != null) + { + T plug = (T)Activator.CreateInstance(pluginType, + args); + + return plug; + } + } + } + + return null; + } + catch (Exception e) + { + return null; + } + } } } -- cgit v1.1