F#认为我的类型没有定义

时间:2016-01-12 02:31:48

标签: c# f#

我开始玩F#所以我想我会先用它进行单元测试。问题是Visual Studio一直告诉我没有为我正在使用的某些类型定义类型,我无法理解为什么。

我已导入名称空间,我使用的类型是公共的。这是F#代码:

namespace OpcPersistenceTest

open System
open NUnit.Framework
open OpcPersistence
open OpcPersistence.Data

[<TestFixture>]
type PushServicesTesting() =

    [<Test>]
    let ``create a subscription, then shutdown service, start service, should retrieve original subscription`` =
        let filters = new ResizeArray<Filter>()
        [new Filter(Operand = "EventType", Operator = "=", Value = "SimpleAlarm");
         new Filter(Operand = "Area", Operator = "=", Value = "Area_A")] 
         |> Seq.iter filters.Add

        let keys = new ResizeArray<string>()
        [Guid.NewGuid().ToString(); Guid.NewGuid().ToString();] |> Seq.iter keys.Add

        let configId = PushServices.CreateSubscription(filters, keys)
        PushServices.Shutdown()
        PushServices.Startup()
        let subscription = PushServices.GetSubscriptions(configId)

和一些C#代码:

using System;
using System.Text.RegularExpressions;

namespace OpcPersistence.Data
{
    public struct Filter
    {
        public string Operand { get; set; }
        public string Operator { get; set; }
        public object Value { get; set; }
        ...

类型过滤器显然是未定义的(类型 PushServices 也是如此)但是如果我将它换成同一命名空间中的另一个类,我就没有这个问题。我甚至尝试改变班级名称,但无济于事。有什么想法吗?

修改

它也不会显示在intellisense中,因为命名空间的其余部分如下图所示。

enter image description here

1 个答案:

答案 0 :(得分:2)

因为这显然解决了问题(来自评论)

当您使用多个项目时,智能感知和错误消息可能不正确,特别是如果您在未构建的情况下更改另一个项目中的文件。

重建解决方案可以解决问题。