// Copyright 2009-2022 Josh Close // This file is a part of CsvHelper and is dual licensed under MS-PL and Apache 2.0. // See LICENSE.txt for details or visit http://www.opensource.org/licenses/ms-pl.html for MS-PL and http://opensource.org/licenses/Apache-2.0 for Apache 2.0. // https://github.com/JoshClose/CsvHelper using System; namespace CsvHelper { /// /// Defines the functionality of a class that creates objects /// from a given type. /// public interface IObjectResolver { /// /// A value indicating if the resolver's /// returns false that an object will still be created using /// CsvHelper's object creation. True to fallback, otherwise false. /// Default value is true. /// bool UseFallback { get; } /// /// A value indicating if the resolver is able to resolve /// the given type. True if the type can be resolved, /// otherwise false. /// Func CanResolve { get; } /// /// The function that creates an object from a given type. /// Func ResolveFunction { get; } /// /// Creates an object from the given type using the /// function. If is false, the object will be /// created using CsvHelper's default object creation. If /// is false, an exception is thrown. /// /// The type to create an instance from. The created object /// may not be the same type as the given type. /// Constructor arguments used to create the type. object Resolve( Type type, params object[] constructorArgs ); /// /// Creates an object from the given type using the /// function. If is false, the object will be /// created using CsvHelper's default object creation. If /// is false, an exception is thrown. /// /// The type to create an instance from. The created object /// may not be the same type as the given type. /// Constructor arguments used to create the type. T Resolve( params object[] constructorArgs ); } }