/// <summary> /// Determines whether the Plugin has the given capability. /// This is derived from the implemented interfaces. I.e. when the Interface IMessageSource is implemented, /// the Plugin has the capability MessageSource. /// </summary> /// <param name="capability">The capability to check.</param> /// <returns>true if the plugin can do the given task, false if not.</returns> /// <exception cref="ArgumentOutOfRangeException">The given capability was not known to this function.</exception> public bool HasCapability(PluginCapability capability) { switch (capability) { case PluginCapability.MessageSource: return(GetType().GetInterface("IMessageSource") != null); case PluginCapability.MessageSink: return(GetType().GetInterface("IMessageSink") != null); case PluginCapability.FreetextSource: return(GetType().GetInterface("IFreetextSource") != null); case PluginCapability.FreetextSink: return(GetType().GetInterface("IFreetextSink") != null); case PluginCapability.TriggerMessageSource: return(GetType().GetInterface("ITriggerMessageSource") != null); case PluginCapability.TriggerMessageSink: return(GetType().GetInterface("ITriggerMessageSink") != null); case PluginCapability.TriggerRequestSource: return(GetType().GetInterface("ITriggerRequestSource") != null); case PluginCapability.TriggerRequestSink: return(GetType().GetInterface("ITriggerRequestSink") != null); default: throw new ArgumentOutOfRangeException("capability"); } }
/// <summary> /// Determines whether the Plugin has the given capability. /// This is derived from the implemented interfaces. I.e. when the Interface IMessageSource is implemented, /// the Plugin has the capability MessageSource. /// </summary> /// <param name="capability">The capability to check.</param> /// <returns>true if the plugin can do the given task, false if not.</returns> /// <exception cref="ArgumentOutOfRangeException">The given capability was not known to this function.</exception> public bool HasCapability(PluginCapability capability) { switch (capability) { case PluginCapability.MessageSource: return GetType().GetInterface("IMessageSource") != null; case PluginCapability.MessageSink: return GetType().GetInterface("IMessageSink") != null; case PluginCapability.FreetextSource: return GetType().GetInterface("IFreetextSource") != null; case PluginCapability.FreetextSink: return GetType().GetInterface("IFreetextSink") != null; case PluginCapability.TriggerMessageSource: return GetType().GetInterface("ITriggerMessageSource") != null; case PluginCapability.TriggerMessageSink: return GetType().GetInterface("ITriggerMessageSink") != null; case PluginCapability.TriggerRequestSource: return GetType().GetInterface("ITriggerRequestSource") != null; case PluginCapability.TriggerRequestSink: return GetType().GetInterface("ITriggerRequestSink") != null; default: throw new ArgumentOutOfRangeException("capability"); } }