/// <summary>
/// CsvÄ£ÐÍ´úÀí°ïÖúÀà
/// </summary>
public static class CsvModelDynamicProxyHelper
{
    private static readonly CsvModelDynamicProxy DynamicProxy = new CsvModelDynamicProxy();

    /// <summary>
    /// ÎªÖ¸¶¨ÀàÐÍ´´½¨Ò»¸öÊ¹ÓÃ¹²ÏíÀ¹½ØÆ÷µÄ´úÀíÊµÀý
    /// </summary>
    /// <typeparam name="T">±»´úÀíÀàÐÍ</typeparam>
    /// <returns>´úÀíÊµÀý</returns>
    public static T Of<T>() where T : class, new()
    {
        return DynamicProxy.Of<T>();
    }

    /// <summary>
    /// ÎªÖ¸¶¨ÀàÐÍ´´½¨Ò»¸öÊ¹ÓÃ¶ÀÁ¢À¹½ØÆ÷µÄ´úÀíÊµÀý
    /// </summary>
    /// <typeparam name="T">±»´úÀíÀàÐÍ</typeparam>
    /// <returns>´úÀíÊµÀý</returns>
    public static T OfWithIndependentPropertyInterceptor<T>() where T : class, new()
    {
        return DynamicProxy.Of<T>(new IndependentPropertyInterceptor());
    }
}