public interface IProcessor
string Process(string text);
public class GBR : IProcessor
public string Process(string text)
return $"{text} (processed with GBR rules)";
public class FRA : IProcessor
public string Process(string text)
return $"{text} (processed with FRA rules)";
public static IProcessor CreateProcessor(string country)
var typeName = $"{typeof(Processors).FullName}+{country}";
var processor = (IProcessor)Assembly.GetAssembly(typeof(Processors)).CreateInstance(typeName);
public static string Process(string country, string text)
var processor = CreateProcessor(country);
return processor?.Process(text);
public static void Main()
var processorGbr = Processors.CreateProcessor("GBR");
Console.WriteLine(processorGbr.Process("This is some text."));
Console.WriteLine(Processors.Process("FRA", "This is some more text."));