ここに私がやりたいことのプロトタイプがありますが、私が書いたようには機能しないことに気づいています:
using System.Collections.ObjectModel;
namespace Merlinia.CommonClasses
{
public abstract class JustTesting<TItem> : KeyedCollection<string, TItem>
{
protected override string GetKeyForItem(TItem anItem)
{
return GetKeyForItem(anItem).ToUpperInvariant();
}
protected new abstract string GetKeyForItem(TItem anItem);
}
}
ここで、派生クラスで必要な抽象メソッドの名前を変更することで、それが機能することに気付きました。
using System.Collections.ObjectModel;
namespace Merlinia.CommonClasses
{
public abstract class JustTesting<TItem> : KeyedCollection<string, TItem>
{
protected override string GetKeyForItem(TItem anItem)
{
return NewGetKeyForItem(anItem).ToUpperInvariant();
}
protected abstract string NewGetKeyForItem(TItem anItem);
}
}
すべてのクラスで、メソッド名が同じ GetKeyForItem であることを望みます。それを機能させる方法はありますか?