/// <summary> /// Load all Subscribers from a given assembly and adds them to the Ella-internal management<br /> /// <remarks>Any type must define the <see cref="Ella.Attributes.SubscriberAttribute"/> attribute in order to be detected as subcriber</remarks> /// </summary> /// <param name="a">The assembly where to search subscribers</param> /// <param name="createInstances">if <c>true</c>, instances of discovered subscribers are created</param> /// <param name="activation"></param> public static void Subscribers(Assembly a, bool createInstances = false, Func <Type, object> activation = null) { if (a == (Assembly)null) { throw new ArgumentNullException("a"); } _log.DebugFormat("Loading subscribers from {0}", a.FullName); AssemblyName[] referencedAssemblies = a.GetReferencedAssemblies(); foreach (AssemblyName name in referencedAssemblies) { ResolveAndLoadAssembly(name); } Type[] exportedTypes = a.GetExportedTypes(); foreach (Type t in exportedTypes) { if (Is.Subscriber(t)) { _log.DebugFormat("Found subscriber {0} in assembly {1}", t, a.FullName); if (!EllaModel.Instance.Subscribers.Contains(t)) { EllaModel.Instance.Subscribers.Add(t); } if (createInstances) { Create.ModuleInstance(t, activation); } } } }
public void StopAPublisher() { object instance = Create.ModuleInstance(typeof(TestPublisher)); Start.Publisher(instance); Thread.Sleep(100); Stop.Publisher(instance); }
public void CreateInstanceOfAModule() { object publisher = Create.ModuleInstance(typeof(TestPublisher)); Assert.IsNotNull(publisher); Assert.IsInstanceOfType(publisher, typeof(TestPublisher)); object subscriber = Create.ModuleInstance(typeof(TestSubscriber)); Assert.IsNotNull(subscriber); Assert.IsInstanceOfType(subscriber, typeof(TestSubscriber)); try { subscriber = Create.ModuleInstance(typeof(TestSubscriberMethodFactory)); Assert.IsNull(subscriber); } catch (ArgumentException) { } try { subscriber = Create.ModuleInstance(typeof(TestSubscriberNoFactory)); Assert.IsNull(subscriber); } catch (ArgumentException) { } subscriber = Create.ModuleInstance(typeof(TestSubscriberStaticMethodFactory)); Assert.IsNotNull(subscriber); Assert.IsInstanceOfType(subscriber, typeof(TestSubscriberStaticMethodFactory)); try { subscriber = Create.ModuleInstance(typeof(TestSubscriberStaticConstructerFactory)); Assert.IsNull(subscriber); } catch (ArgumentException) { } }
public void StartAPublisher() { object instance = Create.ModuleInstance(typeof(TestPublisher)); Start.Publisher(instance); }