/// <summary> /// Include specified field to resulting typing /// </summary> /// <param name="tc">Configuration builder</param> /// <param name="field">Field to include</param> /// <returns>Fluent</returns> public static FieldExportBuilder WithField <T, TData>(this ITypedExportBuilder <T> tc, Expression <Func <T, TData> > field) { var prop = LambdaHelpers.ParseFieldLambda(field); ClassOrInterfaceExportBuilder tcb = tc as ClassOrInterfaceExportBuilder; return(new FieldExportBuilder(tcb.Blueprint, prop)); }
/// <summary> /// Include specified property to resulting typing /// </summary> /// <param name="tc">Configuration builder</param> /// <param name="property">Property to include</param> /// <returns>Fluent</returns> public static PropertyExportBuilder WithProperty <T, TData>(this ITypedExportBuilder <T> tc, Expression <Func <T, TData> > property) { var prop = LambdaHelpers.ParsePropertyLambda(property); ClassOrInterfaceExportBuilder tcb = tc as ClassOrInterfaceExportBuilder; return(new PropertyExportBuilder(tcb.Blueprint, prop)); }
/// <summary> /// Include specified method to resulting typing. /// User <see cref="Ts.Parameter{T}()" /> to mock up method parameters or specify configuration for perticular method /// parameter /// </summary> /// <param name="tc">Configuration builder</param> /// <param name="method">Method to include</param> /// <returns>Fluent</returns> public static MethodExportBuilder WithMethod <T>(this ITypedExportBuilder <T> tc, Expression <Action <T> > method) { var prop = LambdaHelpers.ParseMethodLambda(method); ClassOrInterfaceExportBuilder tcb = tc as ClassOrInterfaceExportBuilder; var methodConf = new MethodExportBuilder(tcb.Blueprint, prop); tcb.ExtractParameters(method); return(methodConf); }