我对如何在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);
}
}
}
答案 0 :(得分:0)
我不会为你写完整件事,但这里有一些让你开始的非显而易见的事情:
typeof(float) ==> System::Single::typeid
// I like to specify the full namespace for explicitness.
Lambdas:C ++ / CLI不支持lambdas。您需要声明一个完整的方法,并构建一个委托。幸运的是,你已经拥有了,你的两个Write方法应该可行。不要忘记在声明委托时,如果它是一个实例方法,则需要指定要调用函数的对象,在代码中应为this
。