繁体   English   中英

C#项目中的F#类型扩展:是否缺少System.Runtime.CompilerServices.Extension?

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM