public void Initialize(Assembly assembly)
{
IEnumerable<Type> messageDefinitionTypes =
from t in assembly.GetTypes()
where typeof (IMessageConfiguration).IsAssignableFrom(t) && !t.IsAbstract
select t;
foreach (Type messageDefinitionType in messageDefinitionTypes)
{
if (messageDefinitionType.BaseType != null && messageDefinitionType.BaseType.IsGenericType)
{
Type messageType = messageDefinitionType.BaseType.GetGenericArguments()[0];
var messageConfiguration = (IMessageConfiguration)Activator.CreateInstance(messageDefinitionType);
_messageConfigurations.Add(messageType, messageConfiguration);
}
}
}