Creating instance of all classes that have certain attribut value
I'm not sure what feedback specifically you're looking for. There are minor formatting and naming questions, but only two things I would specifically draw attention to.

The first thing is that you're enumerating all the settings in the App.config, but you're only interested in settings that relate directly to message delivery. You should name-space your setting keys, and filter the settings before evaluating them.

&lt;appSettings&gt;
    &lt;add key="MessageDelivery.MessageToConsole" value="true"/&gt;
    &lt;add key="MessageDelivery.MessageToDb" value="true"/&gt;
    &lt;add key="MessageDelivery.MessageToService" value="false"/&gt;
    &lt;add key="MessageDelivery.MessageToFile" value="false"/&gt;
  &lt;/appSettings&gt;


and

List&lt;string&gt; settingValues = ConfigurationManager.AppSettings.AllKeys
        .Where(key =&gt; ConfigurationManager.AppSettings[key].Equals("true"))
        .Where(key =&gt; key.StartsWith("MessageDelivery."))
        .Select(value =&gt; value.Replace("MessageDelivery.",""))
        .ToList();




Secondly, avoid using two different forms of Linq expression building:

List&lt;string&gt; settingValues = ConfigurationManager.AppSettings.AllKeys

        .Where(key =&gt; ConfigurationManager.AppSettings[key].Equals("true"))
        .Select(value =&gt; value)
        .ToList();


and

return from type in assembly.GetTypes()
           where type.IsDefined(typeof(MessageDeliveryAttribute), false)
           select type;