我要做的就是确保Item类的子类实现一个静态方法,并且我希望在编译时对其进行检查以避免运行时错误。
具有静态方法的抽象类似乎不起作用:
错误:不能将静态成员标记为覆盖、虚拟或抽象
public abstract class Item
{
public static abstract Item GetHistoricalItem(int id, DateTime pastDateTime);
}
public class Customer : Item
{
public static override Customer GetHistoricalItem(int id, DateTime pastDateTime)
{
return new Customer();
}
}
public class Address : Item
{
public static override Address GetHistoricalItem(int id, DateTime pastDateTime)
{
return new Address();
}
}
并且接口似乎也不起作用:
错误:客户没有实现接口成员 GetHistoricalItem()
public class Customer : Item, HistoricalItem
{
public static Customer GetHistoricalItem(int id, DateTime pastDateTime)
{
return new Customer();
}
}
public class Address : Item, HistoricalItem
{
public static Address GetHistoricalItem(int id, DateTime pastDateTime)
{
return new Address();
}
}
interface HistoricalItem
{
Item GetHistoricalItem();
}
是否有一些解决方法可以让编译器检查继承类是否实现具有特定签名的静态方法?