public override object CreateInstance(Type type, IEnumerable <KeyValuePair <string, object> > values, IServiceProvider serviceProvider, params Attribute[] attributes) { if (type == null) { throw new ArgumentNullException("type"); } object result = null; Type builderType = Adaptable.GetBuilderType(type); if (builderType == null) { return(Default.CreateInstance(type, values, serviceProvider, attributes)); } else { result = Default.CreateInstance(builderType, values, serviceProvider, attributes); MethodInfo mi; result = Adaptable.InvokeBuilder(result, out mi, serviceProvider); InitializeCoreHelper(result, mi.ReturnType, values, serviceProvider); } if (result == null) { throw RuntimeFailure.CannotActivateNoConstructorOrBuilder("type", type); } return(result); }
public override void Save(TextWriter writer, object value) { if (writer == null) { throw new ArgumentNullException("writer"); } if (value == null) { throw new ArgumentNullException("value"); } IPropertyStore pp = Adaptable.TryAdapt <IPropertyStore>(value); if (pp == null) { pp = Runtime.Properties.FromValue(value); } if (pp == null) { throw Failure.NotAdaptableTo("value", value, typeof(IPropertyStore)); } using (PropertiesWriter pw = new PropertiesWriter(writer)) { pw.WriteProperties(pp); } }
public static Type GetBuilderType(this Type adapteeType) { if (adapteeType == null) { throw new ArgumentNullException(nameof(adapteeType)); } var result = Adaptable.GetAdapterType(adapteeType, AdapterRole.Builder); if (result == null || AdapterRole.IsBuilderType(result, adapteeType)) { return(result); } return(null); }
protected virtual object BindParameterSubscription(ParameterInfo parameter, IServiceProvider serviceProvider) { object value = null; Type requiredType = parameter.ParameterType; if (IsServiceBindableType(requiredType)) { value = serviceProvider.GetService(requiredType); } if (value != null) { value = Adaptable.TryAdapt(value, requiredType, serviceProvider); } return(value); }