code: func (fa *Factory) ConstructWithContextAndOption(ctx context.Context, ptr interface{}, opt map[string]interface{}) error {
  	pt := reflect.TypeOf(ptr)
  	if pt.Kind() != reflect.Ptr {
  		return errors.New("ptr should be pointer type.")
  	}
  	pt = pt.Elem()
  	if pt.Name() != fa.modelName() {
  		return errors.New("ptr type should be " + fa.modelName())
  	}
  
  	inst := reflect.ValueOf(ptr).Elem()
  	_, err := fa.build(ctx, &inst, pt, opt, nil)
  	return err
  }
docs: /*
  Bind values of a new objects to a pointer to struct with context and option.
  
  ctx: context object
  ptr: a pointer to struct
  opt: attibute values
  */