Új hozzászólás Aktív témák

  • ArchElf

    addikt

    válasz ArchElf #801 üzenetére

    Egy példa a lentire(kicsit meg lett vágva). Az példa egy dinamikusan betölthető adatszolgáltató interfésze + betöltő osztálya. Természetesen az adatszolgáltatókat külön meg kell(ett) írni hozzá :)

    using System;
    using System.Collections.Generic;
    using System.Reflection;
    using System.Text;


    namespace MonitorUser.Connector
    {
    public static class ConnectorLoader
    {
    /// <summary>
    /// Collection of all loaded IConnector objects
    /// </summary>
    public static List<IConnector> Connectors = new List<IConnector>();
    /// <summary>
    /// Initialize a new IConnector instance and start it
    /// </summary>
    /// <param name="location">IConnector dll location</param>
    /// <param name="name">IConnector full class name</param>
    /// <param name="connectionString">Connection string for starting the connector</param>
    /// <param name="initData">Additional initialization data</param>
    /// <returns>Initialized and started IConnector instance</returns>
    public static IConnector Load(string location, string name, string connectionString, ConnectorInitData initData)
    {
    try
    {
    IConnector ic = null;
    Assembly asm = Assembly.LoadFrom(location);
    Type tp = asm.GetType(name);
    object p = Activator.CreateInstance(tp);
    ic = (IConnector)p;
    ic.Connect(connectionString, initData);
    Connectors.Add(ic);
    return ic;
    }
    catch
    {
    throw;
    }
    }
    }

    public interface IConnector
    {

    event EventHandler NewItem;

    bool Connect(string connectionString, ConnectorInitData initData);

    bool Disconnect();

    bool Check();

    bool Check(params string[] indexer);

    ConnectorData GetNextItem();

    bool SetItem(ConnectorData item);

    bool SetItem(string referrer);
    }

    public struct ConnectorInitData
    {
    public long Position;
    public DateTime StartTime;
    public string QueryString;
    public ConnectorInitData(long Position, DateTime StartTime, string QueryString)
    {
    this.Position = Position;
    this.StartTime = StartTime;
    this.QueryString = QueryString;
    }
    }

    public struct ConnectorData
    {
    public long Identifier;
    public List<string> Headers;
    public List<Type> Types;
    public List<object> Values;

    public ConnectorData(long id, List<string> headers, List<Type> types, List<object> values)
    {
    this.Identifier = id;
    this.Headers = headers;
    this.Types = types;
    this.Values = values;
    }
    }
    }

Új hozzászólás Aktív témák