Feedback

C# - Simple Pluginloader

Veröffentlicht von am 25.06.2013
(1 Bewertungen)
This is a simple pluginloader.

example:

 Runtime.CreateRuntime(Application.StartupPath + "\\Plugin.dll");

var plugs = Runtime.CreateMultipleInstance<Plugin>();

foreach (var p in plugs)
{
listBox1.Items.Add(p.GetType().Name);
}


  private void listBox1_SelectedIndexChanged(object sender, EventArgs e)
{
var p = Runtime.CreateInstanceOf<Plugin>(listBox1.SelectedItem.ToString());

p.Host = this;

p.OnClick();
}
GFU-Schulungen  [Anzeige]

VB.NET Komplett

Sie stehen vo der Aufgabe, individuelle Anwendungen für Windows zu schreiben. Hier ist VB.NET die optimale Sprache. Sie erlernt sich recht leicht und passt sich komplett in die .NET Umgebung von Microsoft ein. Nach der Schulung entwickeln Sie anwenderfreundliche Programme in VB.NET . Mit den objektorientierten Modellen in VB.NET erzeugen Sie außerdem wiederverwendbare Komponenten.

C# Aufbaukurs

Sie haben grundlegende .NET- und C#-Kenntnisse und und wollen diese nun erweitern. Der Aufbaukurs C# führt Sie ein die Arbeit mit Interfaces und Delegates, Generics und Parallel Computing.

class Runtime
    {

        private static Assembly assembly;

        public static void CreateRuntime(string ass)
        {
            assembly = Assembly.LoadFile(ass);
        }

        [DebuggerStepThrough]
        public static t CreateInstance<t>()
        {
            object returns = null;

            foreach (var ty in assembly.GetTypes())
            {
                if (ty.BaseType == typeof(t))
                {
                    returns = assembly.CreateInstance(ty.FullName);
                }
            }

            if (returns != null)
            {
                return (t)returns;
            }
            else
            {
                throw new Exception("Konnte keine Instanz vom Typ '" + typeof(t).Name + "' erstellen");
            }
        }

        public static Assembly GetAssembly()
        {
            return assembly;
        }

        [DebuggerStepThrough]
        public static t[]  CreateMultipleInstance<t>()
        {
            List<t> returns = new List<t>();

            foreach (var ty in assembly.GetTypes())
            {
                if (ty.BaseType == typeof(t))
                {
                    returns.Add((t) assembly.CreateInstance(ty.FullName));
                }
            }

            if (returns.Count != 0)
            {
                return returns.ToArray();
            }
            else
            {
                throw new Exception("Konnte keine Instanz vom Typ '" + typeof(t).Name + "' erstellen");
            }
        }

        [DebuggerStepThrough]
        public static t CreateInstanceOf<t>(string classname)
        {
            object returns = null;

            foreach (var ty in assembly.GetTypes())
            {
                if (ty.Name == classname)
                {
                    returns = assembly.CreateInstance(ty.FullName);
                }
            }

            if (returns != null)
            {
                return (t)returns;
            }
            else
            {
                throw new Exception("Konnte keine Instanz vom Typ '" + typeof(t).Name + "' erstellen");
            }
        }

    }
Abgelegt unter plugin, simple.

Kommentare zum Snippet

 

Logge dich ein, um hier zu kommentieren!