2

我不知道如何在 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);
        }
    }
}
4

1 回答 1

0

我不会为你写完整的东西,但这里有一些不明显的东西可以让你开始:

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

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

于 2012-05-16T18:25:55.403 回答