【发布时间】:2010-12-26 17:41:18
【问题描述】:
我想要做的就是确保类 Item 的子类实现一个 static 方法,并且我希望对此进行检查在编译时避免运行时错误。
带有静态方法的抽象类似乎不起作用:
错误:静态成员 不能标记为 覆盖、虚拟或抽象
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();
}
是否有一些解决方法可以让编译器检查继承的类是否实现了具有特定签名的静态方法?
【问题讨论】:
标签: c# interface static methods abstract