汎用インターフェースを宣言した後で、このインターフェースの非汎用バージョン、または少なくとも非汎用バージョンのメソッドまたはプロパティーが必要でしたそのインターフェイス上に 私は通常、新しい非ジェネリックインターフェイスを宣言し、ジェネリックインターフェイスを継承します。 私は以下の例ではショーでに実行しています問題:君たちはそれが抽象的なことについてどのように行くのです汎用および非汎用インターフェース
public abstract class FormatBase { }
public interface IBook<F> where F : FormatBase
{
F GetFormat();
}
public interface IBook
{
object GetFormat();
}
public abstract class BookBase : IBook<FormatBase>, IBook
{
public abstract FormatBase GetFormat();
object IBook.GetFormat()
{
return GetFormat();
}
}
のiBook(非ジェネリック)インターフェースを宣言するための唯一の方法は、明示的であるので、?
これはあなたの問題を解決していませんが、あなたはそれが ' BookBase作るために意味をなさない可能性があるとは思わない:iBookの、iBookのT:FormatBase'を?さもなければ、あなたの単純な例では、 'IBook'の代わりに' IBook 'を使うことはほとんどないでしょう。 –
あなたは正しいです。私はコードを更新します。しかし、非総称抽象的な問題は依然として存在する。 – BlueChameleon
"'IBook .GetFormat()は継承されたメンバー' IBook.GetFormat() 'を非表示にします。隠しを意図している場合は、newキーワードを使用してください。警告。これはおそらくどこかで設計の決定が悪いことが原因ですが、より多くの情報がなければ、より良い設計が何であるかは言うまでもありません。 –