public void LoadData() { AssemblyModels.Include(t => t.Namespaces).Load(); NamespaceModels.Include(t => t.Types).Load(); Types.Include(t => t.GenericArguments) .Include(t => t.Attributes) .Include(t => t.DeclaringType) .Include(t => t.BaseType) .Include(t => t.ImplementedInterfaces) .Include(t => t.Fields) .Include(t => t.Methods) .Include(t => t.Properties) .Include(t => t.Indexers) .Include(t => t.Events) .Include(t => t.Constructors) .Include(t => t.NestedTypes).Load(); ConstructorModels.Include(t => t.GenericArguments) .Include(t => t.Parameters).Load(); EventModels.Load(); FieldModels.Include(t => t.TypeModel).Load(); IndexerModels.Load(); AttributeModels.Load(); MethodModels.Include(t => t.GenericArguments) .Include(t => t.Parameters).Load(); ParameterModels.Load(); PropertyModels.Include(t => t.propertyMethods).Load(); }
private static object CreateSMTInstance(MappingModel model) { var constructorModel = ConstructorModels.FirstOrDefault(cm => cm.MapName.ToLower().Equals(model.Name.ToLower())); if (constructorModel == null) { return(null); } var definedConstructor = model.To.Class.GetConstructors().FirstOrDefault(ctr => ctr.GetParameters().Length == constructorModel.Params.Count); if (definedConstructor == null) { throw new SMTException(String.Format("No constructor found matching the config file params for this mapping: {0}", model.Name)); } var constParams = definedConstructor.GetParameters(); var finalParams = new List <object>(); foreach (var param in constParams) { var smtParam = constructorModel.Params.FirstOrDefault(p => p.Name.Equals(param.Name)); if (smtParam == null && !param.HasDefaultValue) { throw new SMTException(String.Format("Constructor {0} has no param named {1} or has a default value", definedConstructor.Name, param.Name)); } var shouldUserDefaultValue = smtParam == null && param.HasDefaultValue; var equalTypes = param.ParameterType.Equals(typeof(string)); object paramValue = smtParam == null && param.HasDefaultValue ? param.DefaultValue : equalTypes ? smtParam.Value : TypeDescriptor.GetConverter(param.ParameterType).ConvertFrom(smtParam.Value); finalParams.Add(paramValue); } return(definedConstructor.Invoke(finalParams.ToArray())); }