私はこのように構築されたメタモデルを持っています:
class ModelElement
{
string id;
}
class Package : ModelElement
{
List<Package> nestedPackages;
List<Class> ownedClasses;
}
class Class : ModelElement
{
}
これで2つのモデルを作成しましたが、それらが同一であるかどうかを確認したいと思います。要素のIDを比較したいのですが、どのタイプの要素にもメソッドを記述したくありません。
Package a; //pretend both have classes
Package b; //and nested packages
compare(a.nestedPackages, b.nestedPackages);
compare(a.ownedClasses; b.OwnedClasses);
ClassとPackageはどちらもModelElementを継承しているため、どちらもIDを持っています。そこで、IDを比較する関数「compare」を作成したいと思います。Genericsを使用することを考えましたが、genericデータ型には属性「id」がありません。何か案は?