c ++ / cli委托+ lambda +重载函数

时间:2012-05-16 12:09:01

标签: c++-cli

我对如何在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);
        }
    }
}

1 个答案:

答案 0 :(得分:0)

我不会为你写完整件事,但这里有一些让你开始的非显而易见的事情:

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

Lambdas:C ++ / CLI不支持lambdas。您需要声明一个完整的方法,并构建一个委托。幸运的是,你已经拥有了,你的两个Write方法应该可行。不要忘记在声明委托时,如果它是一个实例方法,则需要指定要调用函数的对象,在代码中应为this