c# - C# 强制子类实现静态方法
问题描述
我目前正在构建一个类库来处理单位测量,我想使用带有静态方法的工厂模式来创建长度或区域等。
为了保持方法一致,我想创建一个接口或超类。有没有办法强制子类实现静态方法?
(题外话:是否也可以强制子类重载运算符?)
例如:
public class Length
{...
public static Length Create(double value, string unitCode)
{
var length = new Length();
switch (unitCode)
{
case "Mm":
length.Megameters = value;
break;
case "Km":
case "km":
length.Kilometers = value;
break;
case "hm":
length.Hectometers = value;
break;
case "dam":
length.Decameters = value;
break;
case "m":
length.Meters = value;
break;
case "dm":
length.Decimeters = value;
break;
case "cm":
length.Centimeters = value;
break;
case "mm":
length.Millimeters = value;
break;
case "µm":
length.Micrometers = value;
break;
case "pm":
length.Picometers = value;
break;
case "in":
length.Inches = value;
break;
case "ft":
length.Feet = value;
break;
case "yd":
length.Yards = value;
break;
case "mi":
length.Miles = value;
break;
case "smi":
length.ScandinavianMiles = value;
break;
case "ly":
length.LightYears = value;
break;
case "NM":
length.NauticalMiles = value;
break;
case "ftm":
length.Fathoms = value;
break;
case "fur":
length.Furlongs = value;
break;
case "ua":
length.AstronomicalUnits = value;
break;
case "pc":
length.Parsecs = value;
break;
default:
throw new ArgumentException("Not a valid unit given.", nameof(unitCode));
}
return length;
}
... }
解决方案
推荐阅读
- java - 如何在 Android Lollipop 中使用 Base64.getUrlEncoder
- google-cloud-platform - GCP AI Platform Job 无法导入本地模块
- javascript - 如何禁用右键单击反应引导卡?
- xcode - 带有默认 Xcode 12 Core Data 项目的空白白屏
- python - Django Rest Framework中的对象不是可迭代错误
- php - 电子邮件验证连接被拒绝
- java - 使用 java 在 Micronaut 中将 MongoDb ObjectId _id 更改为字符串
- python - 在出现 nan 之前返回最后一个非空值
- flutter - 颤振:如何显示用户特定页面?
- sql - 可以使用自定义错误消息抑制错误消息 | PostgreSQL