你将如何重构这两个类来抽象出相似之处?一个抽象类?简单的继承?重构的类会是什么样的?
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;
}
}
}
发布于 2018-08-28 10:46:08
这两个,因为他们的立场,由于静态方法,不会很好地重构。
你要么在基类上得到某种工厂方法,它返回一个基类的类型(后来需要转换),或者你需要某种额外的辅助类。
给定额外代码的数量并随后转换为适当的类型,这是不值得的。
发布于 2018-08-28 11:40:32
可以将它们组合成一个Locale
类,它存储语言代码和区域代码,具有区域和语言的访问器以及一个解析函数,它还允许使用像“en_gb”这样的字符串...
这就是我在各种框架中看到区域设置的方法。
https://stackoverflow.com/questions/-100000678
复制相似问题