作为一个有 C++ 背景的人,我遇到过以下情况:
鉴于 c# 不支持 typedef,您如何以编程方式关联类型。也就是说,在 C++ 中,我可以将相关类型存储为 typedef,以便在与模板一起使用时进行检索。由于缺少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
但如果没有 typedefs,构建签名似乎是不可能的。
那么,在 C# 中,我该怎么做才能获得 T 的相关接口类型(在 C++ 示例中是 T::Interface)?