Exemplo n.º 1
0
 public static void GenerateCode(this IConceptDataMigration dataMigrationScript, IConceptInfo conceptInfo, IDataMigrationScriptBuilder dataMigrationScriptBuilder)
 {
     foreach (var method in GetPluginMethods(dataMigrationScript, conceptInfo))
     {
         method.InvokeEx(dataMigrationScript, new object[] { conceptInfo, dataMigrationScriptBuilder });
     }
 }
Exemplo n.º 2
0
        private static List <MethodInfo> GetPluginMethods(IConceptDataMigration dataMigrationScript, IConceptInfo conceptInfo)
        {
            var methods = dataMigrationScript.GetType().GetInterfaces()
                          .Where(i => i.IsGenericType && i.GetGenericTypeDefinition() == typeof(IConceptDataMigration <>) &&
                                 i.GetGenericArguments().Single().IsAssignableFrom(conceptInfo.GetType()))
                          .Select(i => i.GetMethod("GenerateCode"))
                          .ToList();

            if (methods.Count == 0)
            {
                throw new FrameworkException(string.Format(
                                                 "Plugin {0} does not implement generic interface {1} that accepts argument {2}.",
                                                 dataMigrationScript.GetType().FullName,
                                                 typeof(IConceptDataMigration <>).FullName,
                                                 conceptInfo.GetType().FullName));
            }

            return(methods);
        }