public static IEnumerable<ISymbolEvaluation> GetSymbolRules()
{
var types = from type in typeof(AllRules).Assembly.GetTypes()
where typeof(ISymbolEvaluation).IsAssignableFrom(type)
where !type.IsInterface && !type.IsAbstract
select type;
var simple =
types.Where(x => x.GetConstructors().Any(c => c.GetParameters().Length == 0))
.Select(Activator.CreateInstance)
.Cast<ISymbolEvaluation>();
return simple.AsArray();
}
}