0

新しいクラスのコンストラクターにパラメーターを送信する必要があります。私が送信したパラメータは一般的です。コンストラクター内で、そのフィールド (id) を使用する必要があります。しかし、直接使用することはできません。使用する前にキャストしたいと思います。しかし、タイプ T を特定のタイプに変換できないと言われました。

例えば

    public class Pet<T>
    {
        foodType foodType; // enum
        public Pet(T sample)
        {
           if(sample.GetType() == typeof(Dog)
           {
              var pet = (Dog)pet; // there is an error.
              foodType = FoodType.Milk;
           } 
           if(sample.GetType() == typeof(Cat)
           {
              var pet = (Cat)pet; // there is an error.
              foodType = FoodType.Fish;
           }     
        }

    }

どのようにキャストするのですか?またはそれを行う方法はありません。

サンプルコードを編集しました。それは良いですか?

4

2 に答える 2

3

「どこ」という言葉を使うことができます。このような:

public class Dog<T> where T: IHasId

これは、T が IHasId インターフェイスから継承されなければならないことを意味します。

于 2013-10-28T07:17:08.960 に答える