예제 #1
0
        /// <summary>
        /// Extracts a type from another type and returns the result of the operation.
        /// </summary>
        /// <param name="parameters">Parameters to the operation.</param>
        /// <returns>Result of the operation.</returns>
        public ExtractTypeResult ExtractType(ExtractTypeParameters parameters)
        {
            parameters.Validate();
              var sourceType = parameters.SourceType;

              var result = new ExtractTypeResult();
              sourceType.Accept(CreateVisitor(parameters, result));

              if (result.Success) {
            if (parameters.AddTypeStrategy == AddTypeStrategy.AddAsNested) {
              sourceType.NestedTypes.Add(result.TargetType);
            }
              }

              return result;
        }