private void AddGenerators(Assembly generatorsAssembly) { foreach (Type type in generatorsAssembly.DefinedTypes) { if (typeof(IGenericGenerator).IsAssignableFrom(type) && type.IsClass) // first check classes wich inherit IGenerator { ConstructorInfo[] constructorsInfo = type.GetConstructors(); GenerateAnyTypeDelegate generateAnyTypeDelegate = Create; IGenericGenerator genericGenerator = (IGenericGenerator)constructorsInfo[0].Invoke(new object[] { Random, generateAnyTypeDelegate }); if (GenericGeneratorByType.Keys.Contains(genericGenerator.TypeOfGenerated)) { continue; } else { GenericGeneratorByType.Add(genericGenerator.TypeOfGenerated, genericGenerator); } } else if (typeof(IGenerator).IsAssignableFrom(type) && type.IsClass) { ConstructorInfo[] constructorsInfo = type.GetConstructors(); IGenerator generator = (IGenerator)constructorsInfo[0].Invoke(new object[] { Random }); if (GeneratorByType.Keys.Contains(generator.TypeOfGenerated)) { continue; } else { GeneratorByType.Add(generator.TypeOfGenerated, generator); } } } }
public SingleTypeListInterfaceGenerator(Random random, GenerateAnyTypeDelegate generateAnyTypeDelegate) { Random = random; GenerateAnyTypeDelegate = generateAnyTypeDelegate; }
public ArrayGenerator(Random random, GenerateAnyTypeDelegate generateAnyTypeDelegate) { Random = random; GenerateAnyTypeDelegate = generateAnyTypeDelegate; }