gpt4 book ai didi

c++-cli - 如何在 C++/CLI 中检查泛型类型?

转载 作者:行者123 更新时间:2023-12-03 17:20:31 25 4
gpt4 key购买 nike

在 C++/CLI 代码中,我需要检查该类型是否是特定的泛型类型。在 C# 中,它将是:

public static class type_helper {
public static bool is_dict( Type t ) {
return t.IsGenericType
&& t.GetGenericTypeDefinition() == typeof(IDictionary<,>);
}
}

但是在 cpp++\cli 中它的工作方式不同,编译器显示语法错误:
class type_helper {
public:
static bool is_dict( Type^ t ) {
return t->IsGenericType && t->GetGenericTypeDefinition()
== System::Collections::Generic::IDictionary<,>::typeid;
}
};

我发现最好的方法是比较这样的字符串:
class type_helper {
public:
static bool is_dict( Type^ t ) {
return t->IsGenericType
&& t->GetGenericTypeDefinition()->Name == "IDictionary`2";
}
};

有人知道更好的方法吗?

PS:
是 c++\cli 中 typeof (typeid) 的限制还是我不知道“正确”的系统税?

最佳答案

你可以写:

return t->IsGenericType
&& t->GetGenericTypeDefinition() == System::Collections::Generic::IDictionary<int,int>::typeid->GetGenericTypeDefinition();

关于c++-cli - 如何在 C++/CLI 中检查泛型类型?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6389149/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com