2

共通のインターフェースを実装する 2 つのクラスがあるとします。

public interface IContract
{
    int Type  { get; }
}

public class XClass : IContract
{
    public int Type  { get; set; }
    public int X { get; set; }
}

public class YClass : IContract
{
    public int Type  { get; set; }
    public int Y { get; set; }
}

ご存知のように、実装されたインターフェイスにクラスを割り当てると、インターフェイス インスタンスには、割り当てられたクラスのすべてのデータが含まれます。

IContract ic = new XClass();

インターフェイス変数 ic 内の値のデータ型を検出する方法が必要です。

If(ic に XClass データ型が含まれる) Then ... If(ic に YClass データ型が含まれる) Then ...

インターフェイスインスタンスに割り当てられたデータ型を検出するのを手伝ってくれる人がいれば幸いです。ありがとう。

4

3 に答える 3

4

やってみました:

if (ic is XClass)

「is」キーワードを使用して、クラスを判別できます。次に、常に .GetType() がありますが、それはそれほどきれいではありません。

if (ic.GetType() == typeof(XClass))

また、asキーワードに言及する価値があります。特定のクラスであることを保証して、現在のオブジェクトから新しいオブジェクトを宣言する場合:

var d = ic as XClass

icXCLass でない場合は、 に設定さdnullます。

于 2013-06-18T16:49:38.273 に答える