我不知道如何在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
。