Thebestwaytoimplementagenericmethodinatype-generic/agnosticway假设我们有一个带有这个签名的泛型方法:TObfuscate(Tvalue)whereT:IConvertible我正在为IConvertible设置类型约束,因此此方法可以消化简单的值类型以及字符串。让我们暂时忘记也可以提供枚举……我想避免一个会检查实际参数类型以执行正确处理的实现。//PleasenoGODMETHODSpublicTObfuscate(Tvalue)whereT:IConvertible{if(valueisint){...}if(valueisstring){...}}这一定是工厂方法的味道,必须调用特定的实现提供程序,但仍然需要进行类型检查。对于这种情况,您认为最好的(希望是通用方法)是什么?为什么是泛型方法?我决定使用泛型方法,因此它总是返回正确的类型,而无需在调用代码时强制转换方法。正如您所说,您必须对某些描述进行类型检查。但是,您可以轻松地将其分解为更小的方法,甚至可以使用开放注册方案:它很有用,需要了解更多有关C#的学习教程。希望大家多多关注——privatereadonlyDictionaryobfuscators=newDictionary;//或者,在构造时注册适当的混淆器。publicvoidRegisterConverter(Funcobfuscator){obfuscators[typeof(T)]=obfuscator;}publicTObfuscate(Tvalue){委托混淆器;if(obfuscators.TryGetValue(typeof(T),outobfuscator){//我们知道它会是正确的类型...varrealObfuscator=(Func)obfuscator;returnrealObfuscator(value);}//???source:
