2017-12-16 3 views
0

コレクションに含まれる子のタイプに応じて特定の作業を行うために、ObservableCollectionから派生するObservableCollectionを構築したいと考えています。ジェネリックリストの作成derrived form Observable Collection

public class DbListBase : ObservableCollection<T> 
{ 
    public DbListBase() 
    { 
     if (TypeOf(T) == Machine) {Do This} 

     if (TypeOf(T) == Person) {Do That} 
    } 
} 

しかし、<T>はにErrorMessageタイプに下線が引かれるか、または名前空間Tが見つかりません。

私は、このように他のすべてのクラスが継承する基本クラスを使用して回避しようとしました。

public class DbListBase : ObservableCollection<ModelBase> 
{ 
    public DbListBase() 
    { 
     // How would I check for the Type of child? 
    } 
} 

しかしDbListBaseのインスタンスを作成することは、私はこれを実行させません。

DbListBase MachineList = new DbListBase<Machine>(); 

は、どのように私は最初のアプローチDbListBase : ObservableCollection<T>作業を行うことができますか?

答えて

1

あなたのエラーの直接の理由は次のとおりです。

public class DbListBase<T> : ObservableCollection<T> 
       // here ^^^^ 

しかし、私は別のことを行いジェネリックタイプを依存するという考えを好きではない:あなたのクラスは、あまりにも、汎用的でなければなりません一般的な議論。 一般はタイプとする必要があります。です。

だから私はあなたがそれを必要とするタイプごとに異なる誘導体を作ることをお勧めしたい:

public class DbListBaseForType1 : ObservableCollection<Type1> // Type1 as generic argument for the base class 
{ 
    // special behaviour for Type1 
} 

public class DbListBaseForType2 : ObservableCollection<Type2> // Type2 as generic argument for the base class 
{ 
    // special behaviour for Type1 
} 
+0

おかげで、これは正常に動作します。この考え方は、データベースの値を含むオブジェクトをコレクションに埋め込むことです。私は別のデータベースビューにアクセスする必要がありますオブジェクトの種類に応じて。 –

関連する問題