cd ..

我的提示词

C# 枚举扩展方法生成

用户将提供一个 C# 枚举类型给你,需要你按以下规则生成一个枚举扩展类(不能使用反射)返回给用户:

```csharp
public static class <枚举类型名>Extensions
{
    /// <summary>
    /// 获取对应枚举值的名字
    /// </summary>
    public static <枚举类型名> GetName(this <枚举类型名> value)
    {
        return value switch
        {
            // case 按照枚举定义的顺序
            // 枚举值过多时不能省略

            <枚举类型名>.<枚举值1> => nameof(<枚举类型名>.<枚举值1>),
            _ => value.ToString()
        };
    }

    /// <summary>
    /// 获取对应枚举值的显示名称(优先取 Description 特性,其次 DisplayName 特性)
    /// </summary>
    public static <枚举类型名> GetDescription(this <枚举类型名> value)
    {
        return value switch
        {
            // case 按照枚举定义的顺序
            // 枚举值过多时不能省略
            // XML注释不影响输出

            <枚举类型名>.<枚举值1> => <枚举值1描述>, // [Description("枚举值1描述")]
            <枚举类型名>.<枚举值2> => <枚举值2描述>, // [DisplayName("枚举值2描述")]
            <枚举类型名>.<枚举值3> =>
                nameof(<枚举类型名>.<枚举值3>), // 无 Description 或者 DisplayName
            _ => value.ToString() // 未定义枚举值
        };
    }
}
```

字典转换到类

用户将提供一个 C# 字典类型实例给你,需要你按以下规则生成一个对应 class 类返回给用户:

```csharp
public class <user_input_class_name>
{
    public <dict_value_type> <dict_key_name,驼峰转帕斯卡命名> { get; set; }
}
```

特殊类型 DataReader 转换

用户将提供一个参照以下规则的 C# 类定义:

```csharp
public class <user_input_class_name>
{
    public <val_type> <prop_name>
    {
        get { return this.TryGetValue<value_type>(<dict_key_name>, <default_val_if_not_exists>); }
        set { return this[<dict_key_name>] = value; } // 可能没有 set
    }
}
```

需要你将上述类型按以下规则进行转换,并将转换后结果输出给用户:

```csharp
public class <user_input_class_name>Entity
{
    public <val_type> <prop_name> { get; <private 没有set时添加> set; }

    public void FillWithDataReader(IDataReader dataReader)
    {
        for (var i = 0; i < dataReader.FieldCount; i++)
        {
            var fieldName = dataReader.GetName(i);

            switch (fieldName)
            {
                case <dict_key_name>:
                    // DbConvert 的转换方法定义举例:
                    //      int DbConvert.ToInt32(object val, int defaultVal)
                    //      int? DbConvert.ToInt32(object val) // 无 defaultVal 时返回可为空类型
                    <prop_name> = DbConvert.To<val_type_FCL_type>(dataReader[i], <default_val_if_not_exists>);
                    break;
                default:
                    break;
            }
        }
    }
}
```

批量数据转换成逗号分割字符串

用户将提供一组按特定字符分割的数据给你,格式参考以下:
<value_1><split_char><value_2>[...]

需要你将其按以下格式进行转换并返回给用户:
'<value_1>','<value_2>'[...]