text: ﻿using System.Collections.Generic;
  
  namespace Util {
      /// <summary>
      /// 系统扩展 - 公共
      /// </summary>
      public static partial class Extensions {
          /// <summary>
          /// 安全获取值，当值为null时，不会抛出异常
          /// </summary>
          /// <param name="value">可空值</param>
          public static T SafeValue<T>( this T? value ) where T : struct {
              return value ?? default( T );
          }
  
          /// <summary>
          /// 获取枚举值
          /// </summary>
          /// <param name="instance">枚举实例</param>
          public static int Value( this System.Enum instance ) {
              if( instance == null )
                  return 0;
              return Util.Helpers.Enum.GetValue( instance.GetType(), instance );
          }
  
          /// <summary>
          /// 获取枚举值
          /// </summary>
          /// <typeparam name="TResult">返回值类型</typeparam>
          /// <param name="instance">枚举实例</param>
          public static TResult Value<TResult>( this System.Enum instance ) {
              if( instance == null )
                  return default( TResult );
              return Util.Helpers.Convert.To<TResult>( Value( instance ) );
          }
  
          /// <summary>
          /// 获取枚举描述,使用System.ComponentModel.Description特性设置描述
          /// </summary>
          /// <param name="instance">枚举实例</param>
          public static string Description( this System.Enum instance ) {
              if ( instance == null )
                  return string.Empty;
              return Util.Helpers.Enum.GetDescription( instance.GetType(), instance );
          }
  
          /// <summary>
          /// 转换为用分隔符连接的字符串
          /// </summary>
          /// <typeparam name="T">集合元素类型</typeparam>
          /// <param name="list">集合</param>
          /// <param name="quotes">引号，默认不带引号，范例：单引号 "'"</param>
          /// <param name="separator">分隔符，默认使用逗号分隔</param>
          public static string Join<T>( this IEnumerable<T> list, string quotes = "", string separator = "," ) {
              return Util.Helpers.String.Join( list, quotes, separator );
          }
      }
  }
  