Bus.Dispatch.AssemblyScanner.GetMessageOptions C# (CSharp) Method

GetMessageOptions() public method

public GetMessageOptions ( IEnumerable assembliesToScan = null ) : List
assembliesToScan IEnumerable
return List
        public List<MessageOptions> GetMessageOptions(IEnumerable<Assembly> assembliesToScan = null)
        {
            var options = new List<MessageOptions>();
            var assemblies = assembliesToScan ?? GetAssemblies();

            var typeToFilter = GetSubscriptionFilters(assemblies);

            foreach (var assembly in assemblies)
            {
                foreach (var type in assembly.GetTypes())
                {
                    if (type.IsInterface || type.IsAbstract || (!typeof(IMessage).IsAssignableFrom(type)))
                        continue;
                    var reliability = type.GetCustomAttributes(typeof(BusOptionsAttribute), true).SingleOrDefault() as BusOptionsAttribute;
                    if (options.All(x => x.MessageType != type))
                        options.Add(new MessageOptions(type, reliability == null ? ReliabilityLevel.FireAndForget : reliability.ReliabilityLevel,
                                                                    reliability == null ? WireTransportType.ZmqPushPullTransport : reliability.TransportType,
                                                                    typeToFilter.GetValueOrDefault(type)));
                }
            }

            return options;
        }