The code in OpenMobile in the file Core.cs is puzzling me as I attempt to create a plugin
Code:
/// <summary>
/// Load each of the plugins into the plugin's array (pluginCollection)
/// </summary>
private static void loadEmUp()
{
foreach (string file in Directory.GetFiles(Path.Combine(Application.StartupPath,"Plugins")))
{
if (file.EndsWith(".dll") == true)
{
Assembly pluginAssembly = Assembly.LoadFrom(file);
foreach (Type pluginType in pluginAssembly.GetTypes())
{
if (pluginType.IsPublic) //Only look at public types
{
if (!pluginType.IsAbstract) //Only look at non-abstract types
{
//Gets a type object of the interface we need the plugins to match
Type typeInterface = pluginType.GetInterface("OpenMobile.Plugin.IHighLevel", true);
//Make sure the interface we want to use actually exists
if (typeInterface != null)
{
IHighLevel availablePlugin = (IHighLevel)Activator.CreateInstance(pluginAssembly.GetType(pluginType.ToString()));
pluginCollection.Add(availablePlugin);
break;
}
does this mean we have to create a dll for any plugin we make? If so, how do I go about doing that? or what resources would I want to look at to do it.
EDIT: There does need to be a dll of the file, but it is created, apparently when the plugin code is built. The reason I was having issues was that the output of my project I created for the plugin was not the same place the program was looking for dll's.
I also ran into another issue. My project was set as using the .NET 2.0 Framework instead of 3.5. This was causing issues with adding the OMFramework to my list of references since it's 3.5 and there is some feature in MonoDevelop that prohibits 2.0 projects form referencing 3.0 and 3.5 projects.
Bookmarks