An interface can't contain constants, fields, operators, instance constructors, finalizers, or types.https://docs.microsoft.com/en-us/dotnet/csharp/pro...
try
{
// do my job or throw exception
}
catch (Exception ex)
{
Debug.WriteLine(ex);
}
var assembly = Assembly.LoadFrom("c:\plugins\table.dll");
var type = assembly.GetType("MyNamespace.Table");
var instance = (ITable) Activator.CreateInstance(type);
namespace Common
{
public interface IPlugin
{
string GetName();
}
}
using Common;
namespace Plugin
{
public sealed class Plugin : IPlugin
{
public string GetName()
{
return "Cool Plugin!";
}
}
}
using Common;
using System;
using System.Diagnostics;
using System.Linq;
using System.Reflection;
namespace PluginsTest
{
class Program
{
static void Main(string[] args)
{
var plugin = LoadPlugin("..\\..\\..\\Plugin\\bin\\Debug\\Plugin.dll");
var name = plugin.GetName();
Debug.WriteLine("Plugin loaded: " + name);
}
static IPlugin LoadPlugin(string path)
{
var type = Assembly
.LoadFrom(path)
.GetTypes()
.First(typeof(IPlugin).IsAssignableFrom);
return (IPlugin)Activator.CreateInstance(type);
}
}
}
// Хотите новый поток - пожалуйста, но я бы рекомендовал что-нибудь типа:
// public static ExecutorService ThreadPool = Executors.newFixedThreadPool(8)
new Thread() {
@Override
public void run() {
Exception exception = null;
try {
// затратные по времени выполнения операции (такие как запрос к серверу http или БД)...
} catch(Exception ex) {
exception = ex;
}
Exception finalException = exception;
Platform.runLater(new Runnable() {
@Override
public void run() {
if (finalException != null) {
// Handle exception in UI thread
} else {
// Handle result in UI thread
}
}
});
}
}.start();