C++ のバックグラウンドを持つ私は、次のような状況に遭遇しました。
c# が typedef をサポートしていない場合、どのようにプログラムで型を関連付けますか? つまり、C++ では、関連する型を型定義として保存し、テンプレートで使用する場合に取得できます。が不足しているため、同じことを c# で同じように行うことはできませんtypedef
。
たとえば、C++ では次のようにします。
template< typename T >
class Thing : public ThingBase<T>
{
public:
bool isRelated( T::Parent & otherThing )
{
T::Auxillary aux( "Yes" );
return aux.isValid( otherThing ) && data.isParent( otherThing );
}
private:
T data;
};
これは、次のいずれかで機能します。
class SomeClass
{
public:
typedef SomeClassParent Parent;
typedef FooAuxillary Auxillary;
bool isParent( Parent & parentObject );
};
class OtherClass
{
public:
typedef OtherClassParent Parent;
typedef BarAuxillary Auxillary;
bool isParent( Parent & parentObject );
};
パラメーターの型を呼び出すことT::isParent
は、共通のインターフェイス インターフェイスを使用して実現できますが、型定義なしではシグネチャを構築するThing::isRelated
ことは不可能に思えます。
では、C# では、T の関連するインターフェイス タイプ (C++ の例では T::Interface) を取得するにはどうすればよいでしょうか?