You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在C# Interactive中自定义泛型类Foo<T>的对象打印格式?

解决C# Interactive中泛型类对象自定义输出格式的问题

这个问题其实很好解决——C# Interactive在输出对象实例时,默认会调用对象的ToString()方法生成显示文本,所以只要给你的Foo<T>类重写这个方法,就能实现你想要的自定义格式。

完整实现代码

public class Foo<T> {
    private readonly T value;
    public Foo(T value) {
        this.value = value;
    }

    public override string ToString()
    {
        // 处理值的显示逻辑:字符串加引号,null显示"null"
        string valueDisplay;
        if (value == null)
        {
            valueDisplay = "null";
        }
        else if (typeof(T) == typeof(string))
        {
            valueDisplay = $"\"{value}\"";
        }
        else
        {
            valueDisplay = value.ToString();
        }

        // 拼接成目标格式
        return $"Foo<{typeof(T).Name}> {{ {valueDisplay} }}";
    }
}

效果测试

在C# Interactive中运行以下代码,就能得到你期望的输出:

> new Foo<string>("bar")
Foo<String> { "bar" }

> new Foo<int>(42)
Foo<Int32> { 42 }

> new Foo<string>(null)
Foo<String> { null }

扩展说明

如果后续需要支持更多特殊类型的格式化(比如日期、枚举等),可以在ToString()方法里添加对应的判断逻辑。比如针对实现了IFormattable接口的类型,还可以调用带格式参数的ToString方法,让输出更精准适配不同场景。

内容的提问来源于stack exchange,提问作者Mark Seemann

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.25 06:57:32