これができないのは、2 つの型のメンバーが異なるためです。メソッドでこれを使用することを考えてみてください。体内で何が起こるでしょうか? 渡される型を知らずにメソッドを作成するにはどうすればよいでしょうか? オートコンプリートはこの種の制約にどのように反応しますか?
あなたの最善の策は、共通の基本クラス - を選択するか、System.Xml.XmlNode
おそらく 2 つの別個のインターフェースを作成するXmlAttribute
ことXmlElement
です。
例えば:
public interface ICommonInterface<T> : IEnumerable
{
//common things that rely only on the first type go here
}
public interface IAttributeInterface<T, T2> : ICommonInterface<T>
where T2 : XmlAttribute
{
}
public interface IElementInterface<T, T2> : ICommonInterface<T>
where T2 : XmlElement
{
}
インターフェイスの主な目的が両方のタイプを大部分一緒に使用することである場合は、XmlNode
アダプター/ファサード パターンの制約またはラッパー クラスを使用する必要があります。