【发布时间】:2012-07-16 14:30:12
【问题描述】:
例如,我有一个 (non-static) 类 Foo<T>
我想为Foo 添加一个方法bar(),但是这个方法应该只适用于Foo<int>。
因为我们不能重载类型约束,
我是否必须在单独的static 类bar(this Foo<int> myFoo) 中创建扩展方法?
【问题讨论】:
标签: c# generics extension-methods
例如,我有一个 (non-static) 类 Foo<T>
我想为Foo 添加一个方法bar(),但是这个方法应该只适用于Foo<int>。
因为我们不能重载类型约束,
我是否必须在单独的static 类bar(this Foo<int> myFoo) 中创建扩展方法?
【问题讨论】:
标签: c# generics extension-methods
基本上,是的。 C#(以及一般的 CLR)不支持 C++ 中已知的模板特化。
当你的类的实现根本不关心实际类型时使用类型参数。
作为替代方案,添加运行时检查以确保仅在 typeof(T) == typeof(int) 上调用该方法。
【讨论】: