在哪里放置转换功能?

Dim*_* C. 8 c# coding-style

由于C#缺乏对独立功能的支持,我发现很难找到放置转换功能的地方.例如,我想将枚举转换为数字.在C++中,我将为此创建以下独立功能:

UINT32 ConvertToUint32(const MyEnum e);
Run Code Online (Sandbox Code Playgroud)

我怎样才能在C#中优雅地做到这一点?我应该创建一个虚拟静态类来保存函数,如果是,我该如何为它找到一个有意义的名字?或者我应该进行部分类转换?

有任何想法吗?

提前致谢.

更新:回想起来,我的示例选择不当,因为在enum和int之间存在默认转换.这将是一个更好的例子:

Person ConvertToPerson(const SpecialPersonsEnum e);
Run Code Online (Sandbox Code Playgroud)

Gis*_*shu 9

上面的示例看起来像是扩展方法的候选者.
如果那是不可能的,我将它们定义为静态类中的静态方法; 我通常将它们放在一个名为XXXHelper的静态类中


Kyl*_*ndo 8

我会去:

namespace ExtensionMethods
{
    public static class MyExtensions
    {
        public static int ConvertToInt(this MyEnum e)
        {
            var m;

            // ... Implementation

            return m;
        }
    }   
}
Run Code Online (Sandbox Code Playgroud)

然后你只需使用MyEnum.ConvertToInt();同一个类可以在同一个类中进行多次转换.扩展方法简而言之,该死的性感.


此外,埃里克关于类型转换器评论让我谷歌搜索.非常棒,但是我不确定如何使用它们Enum,但对于其他转换,它们是干净的实施哨子.看看这里: