2012-05-16 29 views
2

我對如何在C++/cli中做同樣的事情一無所知。 我不清楚我可以如何創建委託以及如何調用它。C++/cli代表+ lambda +超載函數

有人可以幫助我嗎? 謝謝。

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

關於C++/CLI編程的任何入門書籍都涵蓋了代表,我們無法幫助您前往當地圖書館。如果您需要某人爲您翻譯代碼,請考慮rentacoder.com –

回答

0

我不會寫了整個事情給你,但這裏的一對夫婦的非顯而易見的事情讓你開始:

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

Lambda表達式:C++/CLI不支持lambda表達式。您需要聲明一個完整的方法,併爲此構造一個委託。幸運的是,你已經有了這兩個Write方法。不要忘記在聲明委託時,如果它是一個實例方法,則需要指定要調用該函數的對象,在代碼中應爲this