これについては既にいくつか質問がありますが、これを動作させることはできません。クラスがジェネリックインターフェイスを継承するかどうかのテスト
私はこのようなクラスを持っています。
public class TopLocation<T> : ILocation
{
public string name { get; set; }
public string address { get; set; }
}
私はそれがIRestaurant
かIClub
のかどうかを指定したクラスを作成します。これまでのところ問題ありません。
if
の文でIClub
またはIRestaurant
のいずれであるかをテストするにはどうすればよいですか?
これは失敗します。
if (item.trendItem is ILocation<ITopRestaurant>)
、これはnullを返します、それはMVCアプリケーションでASCXページ内に座っていますし、私は正しい部分をレンダリングしようとしていますので、私はif
声明でこれをたい理由がある
Type myInterfaceType = item.trendItem.GetType().GetInterface(
typeof(ITopRestaurant).Name);
ビュー。
編集コメントに応じて
。
public interface ITopClub{}
public interface ITopRestaurant { }
public interface ILocation{}
は、一般的な 'ILocation'はありますが同じように?階層は何ですか? ITOPRestaurantとは何ですか? – Jon
ITopRestauntは、単純に、このアイテムのタイプを識別するために使用される空のインターフェイスです – griegs
可能な複製http://stackoverflow.com/questions/503263/how-to-determine-if-a-type-implements-a-specific -generic-interface-type – HackedByChinese