Esempio n. 1
0
        public ModelRequest LoadModel(string assemblyFilename, string request)
        {
            Assembly Dynamic = Assembly.LoadFrom(assemblyFilename);

            Type TypeofIModel = typeof(IModel);

            foreach (Type Exported in Dynamic.GetExportedTypes())
            {
                if (TypeofIModel.IsAssignableFrom(Exported))
                {
                    ConstructorInfo Constructor = Exported.GetConstructor(Type.EmptyTypes);
                    if (Constructor != null)
                    {
                        IModel       instance     = (IModel)Constructor.Invoke(null);
                        ModelRequest modelRequest = new ModelRequest(instance, request);
                        return(modelRequest);
                    }
                }
            }
            // if no matches
            return(null);
        }
        public static IRecordProcessor LoadRecordProcessor(Assembly Dynamic)
        {
            Type TypeofIRecordProcessor = typeof(IRecordProcessor);

            foreach (Type Exported in Dynamic.GetExportedTypes())
            {
                if (TypeofIRecordProcessor.IsAssignableFrom(Exported))
                {
                    //return (IRecordProcessor)Activator.CreateInstance(InputElementClass);
                    ConstructorInfo Constructor = Exported.GetConstructor(System.Type.EmptyTypes);
                    if (Constructor == null)
                    {
                        throw new Exception("Failed to bind " + Dynamic.FullName + ". Classes has no proper Constructor");
                    }

                    // Type supports IMatch and has an no-parameter constructor
                    IRecordProcessor Instance = (IRecordProcessor)Constructor.Invoke(System.Type.EmptyTypes);
                    return(Instance);
                }
            }
            throw new Exception("Failed to bind " + Dynamic.FullName + ". No acceptable Classes found");
        }