我知道我可以通过泛型来做到这一点,如下所示,但是我如何构建扩展以使用泛型返回父类型?
通用扩展签名:public static TEnum FromString<TEnum>(this Enum par , string val ) where TEnum : Enum {
return (TEnum) Enum.Parse(par.GetType(), val);
}
签名风格,我知道它不会起作用,但有点像我在寻找的东西。
public static this FromString(this Enum par , string val ) {
return Enum.Parse(par.GetType(), val);
}
基本上,我有一系列枚举,它们的值被解析为一个进程的字符串,作为接收者,我需要将该字符串值解析为枚举以进行验证。最终,如果该string
值不是 Enumerator 中的有效值,它将返回 null 或default
,值。事实上,我需要能够返回source
枚举器的类型而不必做一个泛型。
如果它不可能,那就是kewl,只是想我会尝试在没有泛型的情况下做到这一点,并使用扩展逻辑模式来做到这一点。