首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >重构两个基本类?

重构两个基本类?
EN

Stack Overflow用户
提问于 2018-08-28 02:01:23
回答 2查看 0关注 0票数 0

你将如何重构这两个类来抽象出相似之处?一个抽象类?简单的继承?重构的类会是什么样的?

代码语言:javascript
复制
public class LanguageCode
{
    /// <summary>
    /// Get the lowercase two-character ISO 639-1 language code.
    /// </summary>
    public readonly string Value;

    public LanguageCode(string language)
    {
        this.Value = new CultureInfo(language).TwoLetterISOLanguageName;
    }

    public static LanguageCode TryParse(string language)
    {
        if (language == null)
        {
            return null;
        }

        if (language.Length > 2)
        {
            language = language.Substring(0, 2);
        }

        try
        {
            return new LanguageCode(language);
        }
        catch (ArgumentException)
        {
            return null;
        }
    }
}

public class RegionCode
{
    /// <summary>
    /// Get the uppercase two-character ISO 3166 region/country code.
    /// </summary>
    public readonly string Value;

    public RegionCode(string region)
    {
        this.Value = new RegionInfo(region).TwoLetterISORegionName;
    }

    public static RegionCode TryParse(string region)
    {
        if (region == null)
        {
            return null;
        }

        if (region.Length > 2)
        {
            region = region.Substring(0, 2);
        }

        try
        {
            return new RegionCode(region);
        }
        catch (ArgumentException)
        {
            return null;
        }
    }
}
EN

回答 2

Stack Overflow用户

发布于 2018-08-28 10:46:08

这两个,因为他们的立场,由于静态方法,不会很好地重构。

你要么在基类上得到某种工厂方法,它返回一个基类的类型(后来需要转换),或者你需要某种额外的辅助类。

给定额外代码的数量并随后转换为适当的类型,这是不值得的。

票数 0
EN

Stack Overflow用户

发布于 2018-08-28 11:40:32

可以将它们组合成一个Locale类,它存储语言代码和区域代码,具有区域和语言的访问器以及一个解析函数,它还允许使用像“en_gb”这样的字符串...

这就是我在各种框架中看到区域设置的方法。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/-100000678

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档