public override int? Priority(Type sourceType, Type destinationType, MapType mapType) { if (sourceType == typeof (string) || sourceType == typeof (object)) return null; var destProp = destinationType.GetPublicFieldsAndProperties(allowNoSetter: false).Select(x => x.Name).ToList(); if (destProp.Count == 0) return null; return -150; }
protected override ClassModel GetClassModel(Type destinationType) { var props = destinationType.GetPublicFieldsAndProperties(); var names = props.Select(p => p.Name.ToPascalCase()).ToHashSet(); return (from ctor in destinationType.GetConstructors() let ps = ctor.GetParameters() where ps.Length > 0 && names.IsSupersetOf(ps.Select(p => p.Name.ToPascalCase())) orderby ps.Length descending select new ClassModel { ConstructorInfo = ctor, Members = ps.Select(ReflectionUtils.CreateModel) }).First(); }
protected override ClassModel GetClassModel(Type destinationType) { return new ClassModel { Members = destinationType.GetPublicFieldsAndProperties(allowNoSetter: false) }; }