c# - 在 C# 中使用 C++ CLI 模板类

标签 c# .net c++-cli

我在 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/

相关文章:

c# - Nhibernate 析取 ("OR") 跨多对一和多对多关系的查询

c# - 在 c# 中创建一个客户端来调用没有 wsdl 的 web 服务

c# - 下拉 SelectedValue 更改不相关的属性

.net - 如何为记录的错误创建警报?

c++ - 无法在我的 exe 文件的动态库中找到项目入口点

.net - 如何使我的托管 NuGet 包支持 C++/CLI 项目?

c++ - 使用文字初始化 System::String^,但不使用 string::c_str() 或 char[]

c# - 通用委托(delegate)类型声明语法

.net - WCF 什么时候使用 app.config 或 web.config?

.net - 点积函数