2010-12-01 41 views
1

乘坐F#下面的代碼:如何在Silverlight 4和XAML中使用帶泛型的F#類型?

type Blah<'T>(objects : 'T array) as this = // whatever 

當我嘗試使用類型XAML文件中,沒有與泛型參數相關聯的類型,並且它的醜陋。我想,編譯器會抱怨,太多:

<ns:Blah foo="bar"/> 

所以,我儘量別名,像這樣的類型(在我Blah.fs文件底部):

type StuffBlah = Blah<Stuff> 

然後當我在使用它我的XAML文檔以同樣的方式,類型未發現存在:

<ns:StuffBlah foo="bar"/> 

這是爲什麼?有沒有更清潔,更優雅的方式來做到這一點?我仍然得到Silverlight,XAML和F#的支持,所以任何建議都將不勝感激。謝謝。

+1

我對F#一無所知,但當前的XAML規範(即XAML 2006)根本不支持泛型。 XAML 2009確實如此,但它不是一般用途。 – 2010-12-01 17:16:28

回答

4

StuffBlah版本不起作用的原因是,特定的F#語法只爲F#項目創建類型別名,而不是創建實際類型。由於該名稱在IL級別上不可見,因此它通常無法通過Silverlight或XAML訪問。

解決此問題的一種方法是創建StuffBlah作爲衍生自Stuff<'T>的第一類類型。根本不理想,但它會奏效。

+0

聽起來不錯,謝謝。 – 2010-12-01 17:30:35