【问题标题】:How can I use an F# type with generics in Silverlight 4 and XAML?如何在 Silverlight 4 和 XAML 中使用具有泛型的 F# 类型?
【发布时间】:2010-12-01 17:13:15
【问题描述】:

取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# 的窍门,因此我们将不胜感激任何建议。谢谢。

【问题讨论】:

  • 我对 F# 一无所知,但当前的 XAML 规范(即 XAML 2006)根本不支持泛型。 XAML 2009 可以,但它不被普遍使用。

标签: silverlight generics xaml f#


【解决方案1】:

StuffBlah 版本不起作用的原因是特定的 F# 语法为 F# 项目创建类型别名,而不是创建实际类型。由于名称在 IL 级别作为实际类型不可见,因此 Silverlight 或 XAML 通常无法访问它。

解决此问题的一种方法是将StuffBlah 创建为派生自Stuff&lt;'T&gt; 的第一类类型。一点也不理想,但它会起作用。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-02-24
    • 1970-01-01
    相关资源
    最近更新 更多