私がしたいのは、クラス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();
}
継承クラスが特定のシグネチャを持つ静的メソッドを実装しているかどうかをコンパイラにチェックさせるための回避策はありますか?