using System; using System.Collections.Generic; using Telligent.Evolution.Extensibility; using Telligent.Evolution.Extensibility.Api.Version1; using Telligent.Evolution.Extensibility.Version1; namespace Samples { public class BeforeInitializationPlugin : IBeforeInitializationPlugin { #region IPlugin Members public string Description { get { return "Executes before plugin initialize"; } } public string Name { get { return "BeforeInitializationPlugin Sample"; } } public void Initialize() { var service = Container.Get(); //My service will be available Apis.Get().Write(service.SayHello(), new EventLogEntryWriteOptions()); } #endregion public void BeforeInitialize(BeforeInitializationArguments args) { //This runs before any plugin intializes if (args.Reason == PluginInitializationReason.AppStart || !Container.IsInitialized) { Container.Register(new SomeSampleService()); } } } #region Container and Service For Sample Purposes public static class Container { private static IDictionary _services = null; public static void Register(T instance) { _services = new Dictionary(); if (!_services.ContainsKey(typeof(T))) _services.Add(typeof(T),instance); } public static T Get() { object item; _services.TryGetValue(typeof(T), out item); if (item == null) throw new InvalidOperationException("No binding for specified service was found"); return (T) item; } public static bool IsInitialized { get { return _services != null; } } } public class SomeSampleService:ISampleService { public string SayHello() { return "Hello"; } } public interface ISampleService { string SayHello(); } #endregion }