カスタムタイプのインターフェイスを実装している場合、ContainsはカスタムIEquatableで使用できます。特定のタイプのために、一般的なIEquatableインターフェイスを実装することもできます。それらは両方ともユニークのIDを持つことができます。あなたがIEquatableを使用することができます。この場合、実装体で :
class MyType1 : IEquatable<int>
bool IEqutabale<int>.Equals(int other)
{
if (Id == other) return true;
return false;
}
、あなたのように比較することができますが、以下:
if (Type1List.Cast<IEquatable<int>>().Contains(type2Obj.Id)
{
//write your code here
}
あなたの他のオプションは、両方のタイプの間直接平等を実現することです。 はつまり、次のように
class MyType1 : IEquatable<MyType2>
bool IEquatable<MyType2>.IEquals(MyType2 other)
{
//write equality logic here
}
次に、あなたが比較することができます:
if(Type1List.Cast<IEquatable<MyType2>>().Contains(type2Object))
{
//write your code here
}
を単に好奇心:なぜあなたはそれが必要なのですか? – Tigran
私は一度文字列のリストを代わりに使用していたコードをリファクタリングしています。大量のコードを分割する必要はありません。 – Haedrian