メンバーの戻り値の型に関してジェネリックを作成したいインターフェイスがあります。
したがって、非汎用インターフェースが次の場合:
interface IViewHolder{
IView View {get;}
}
そして私は欲しい
interface IViewHolder<TView> : IViewHolder {
where TView : class, IView
TView View {get;}
}
IViewHolder<T>
IViewHolder が必要な場所ならどこでも使用できるように、ジェネリックの View メンバーに new キーワードを使用する必要があります。そうしないと、コンパイルされません。
これは「正しくない」ように思われるので、MS がリフレクターを使用してフレームワークでそれを行う方法を調べました。
したがって、IEnumerable<T>
彼らは次のことを行います。
[TypeDependency("System.SZArrayHelper"), __DynamicallyInvokable]
public interface IEnumerable<out T> : IEnumerable
{
[__DynamicallyInvokable]
IEnumerator<T> GetEnumerator();
}
新しいキーワードは必要ありません。それで、彼らの秘密は何ですか。