プラグイン側ソース
lib1.cs
namespace Classo
{
public class Classa
{
public static string Description()
{
return "掛け算用ライブラリ";
}
public static long Run(long i, long j)
{
return (i * j);
}
}
}
lib2.cs
namespace Classo
{
public class Classa
{
public static string Description()
{
return "足し算用ライブラリ";
}
public static long Run(long i, long j)
{
return (i + j);
}
}
}
使う側
using System;
using System.Reflection;
using System.IO;
class TestCode
{
static void Go(string mod)
{
try {
var assembly = Assembly.LoadFrom(mod);
var module = assembly.GetModule(mod);
var type = module.GetType("Classo.Classa");
Object obj = Activator.CreateInstance(type);
var Desc = type.GetMethod("Description");
Console.WriteLine(" Desc:{0}", Desc.Invoke(null, null));
var Run = type.GetMethod("Run");
object[] param = { 100, 50 };
object result = Run.Invoke(null, param);
Console.WriteLine(" Call(100,50):{0}", result);
}
catch (Exception e)
{
Console.WriteLine(" エラー:{0}", e.Message);
}
}
static void Main(string[] args)
{
string cwd = Directory.GetCurrentDirectory();
foreach (var f in Directory.GetFiles(cwd, "*.dll"))
{
string n = f.Substring(cwd.Length+1);
Console.WriteLine("DLLを発見しました:{0}", n);
Go(n);
}
}
}