[英]F# type extensions in C# project: System.Runtime.CompilerServices.Extension missed?
我正在研究F#,这非常令人着迷。 我想像这里将Optional Types和C#结合起来。 非常有趣的事情...但是我想念一些重要的事情:
#light
namespace MyFSharp
// C# way
[<System.Runtime.CompilerServices.Extension>]
module ExtensionMethods =
[<System.Runtime.CompilerServices.Extension>]
let Great(s : System.String) = "Great"
using System;
using MyFSharp; // reference the F# dll
class Program
{
static void Main(string[] args)
{
var s = "foo";
//s.Awesome(); // no
Console.WriteLine(s.Great()); // yes
}
}
这很简单-我想这对我来说还为时过早...我得到了:
The type 'Extension' is not defined
也许还为时过早...但是我不明白为什么找不到它。
谢谢,马吕斯
您的F#项目是否有对System.Core
程序集的引用?
编辑:嗯...也许明确地将其称为ExtensionAttribute
而不只是Extension
? 也许如果指定了名称空间(而不只是一个简单的名称),它是否不尝试使用Attribute
后缀?
扩展方法在静态类中必须是静态的。 F#是否真的这样发出它? 如果没有,那么您就不走运了。
更新资料
我只是尝试过,它似乎发出了静态的类和方法。 我遇到了与您相同的错误,但是通过编译为:
fsc -r System.Core test.fs
然后在Reflector中查看程序集的输出,看起来一切正常,应该可以工作。
听起来您的F#项目以.Net Framework 2.0为目标。
尝试将其更改为.Net Framework 3.5(在项目属性->应用程序下)。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.