我在 C++/CLI 中有以下类和 int 基元的显式模板实例化..
template<typename T>
public ref class Number
{
T _value;
public:
static property T MinValue
{
T get()
{
return T::MinValue;
}
}
static property T MaxValue
{
T get()
{
return T::MaxValue;
}
}
property T Value
{
T get()
{
return _value;
}
void set(T value)
{
if( value<MinValue || value > MaxValue)
throw gcnew System::ArgumentException("Value out of range");
_value = value;
}
}
};
template ref class Number<int>;
在编译它并使用反射器检查生成的程序集时,我能够看到一个名为 Number<int>
的类但是当试图在 C# 中实例化同一个类时,编译器会提示一些 System::Number
类不采用模板参数。我究竟做错了什么?这完全可以做到吗?
最佳答案
我有一个解决方法,声明一个额外的类继承 Number<int>
类(class)。此类现在在 C# 中可见并且可以实例化。
public ref class MyInt32 : public Number<int>
{
};
关于c# - 在 C# 中使用 C++ CLI 模板类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/681590/