C++/CLI 委托 + lambda + 重载功能



我不知道如何在c ++/cli中做同样的事情。我不清楚如何创建委托以及如何调用它。

有人可以帮助我吗?谢谢。

    public class Writer {
    internal Dictionary<Type, Action<object>> Reflective = new Dictionary<Type, Action<object>>();
    public Writer()
    {
        Reflective.Add(typeof(float), (value) => Write((float)value));
        Reflective.Add(typeof(double), (value) => Write((double)value));
    }
    public void Write(float value)
    {
        Console.WriteLine("Float");
    }
    public void Write(double value)
    {
        Console.WriteLine("Double");
    }
    public void Write<T>(T[] values)
    {
        var method = this.Reflective[typeof(T)];
        foreach (var value in values)
        {
            method(value);
        }
    }
}

我不会为你写整件事,但这里有一些不明显的事情可以帮助你开始:

typeof(float) ==> System::Single::typeid
// I like to specify the full namespace for explicitness.

Lambdas:C++/CLI 不支持 lambda。您需要声明一个成熟的方法,并为其构造一个委托。幸运的是,您已经有了它,您的两个 Write 方法应该可以工作。声明委托时不要忘记,如果它是一个实例方法,则需要指定要在其上调用函数的对象,这应该在代码中this

最新更新