2013-02-20 48 views
1

我正在使用Autofac(我已經在控制檯應用程序中註冊了基本nuget包)並且想要查看註冊列表。LINQ不能在IEnumerable上工作

using System; 
using System.Collections.Generic; 
using System.Linq; 
using System.Text; 
using System.Threading.Tasks; 
using Autofac; 

namespace ConsoleApplication2 
{ 
    class Program 
    { 
     static void Main(string[] args) 
     { 
      // First, create your application-level defaults using a standard 
      // ContainerBuilder, just as you are used to. 
      var builder = new ContainerBuilder(); 
      var appContainer = builder.Build(); 


      appContainer.ComponentRegistry.Registrations.Where(x => true); 
     } 
    } 
} 

的問題是線

appContainer.ComponentRegistry.Registrations.Where(x => true); 

這裏的智能感知不給我消息當LINQ方法但是它並儘可能我可以告訴沒有任何警告編譯錯誤。

我試圖進一步下來

IEnumerable<string> list = new List<string>(); 

    list.Where(x => true); 

和智能正常工作,給我所有的標準列表的方法。

我已經嘗試了這從幾個不同的應用程序從頭開始,我得到了相同的行爲。

關於發生了什麼事情的任何想法?

編輯:

以下工程和智能感知

IEnumerable<IComponentRegistration> test = new List<IComponentRegistration>(); 
      test.Where(x => true); 

正確顯示我使用

從的NuGet <package id="Autofac" version="3.0.1" targetFramework="net45" />

和懸停在ComponentRegistrations給人但是我得到同樣的事情 enter image description here

,並在這種情況下,範圍被定義爲

ILifetimeScope _scope; 

,如果我直接嘗試關閉此

var builder = new ContainerBuilder(); 
var appContainer = builder.Build(); 
appContainer.ComponentRegistry.Registrations.Where(x => true); 

另外IComponentRegistry被定義爲(在Autofac中)

public interface IComponentRegistry : IDisposable 
{ 
    ... 
    IEnumerable<IComponentRegistration> Registrations { get; } 
    ... 
} 
+0

我有其他人也嘗試這個,他們有相同的問題 – 2013-02-21 01:16:44

+0

我也上傳了一個演示,顯示intellisense不工作https://dl.dropbox.com/u/78170732/ConsoleApplication1.zip – 2013-02-21 01:30:28

+0

如果我正確地理解了你,並且問題在於智能感知不能在appContainer.ComponentRegistry.Registrations行上工作。Where(x => true);你應該嘗試並禁用你的插件,看看它是否照顧它,因爲它對我來說工作得很好。既然你說你有別人確認它,也許從你的安裝有共同點的任何插件開始。 – 2013-02-21 06:03:52

回答

0

評論複製來回答。

如果我理解正確的話,你和你的問題是,智能感知不工作就行了

appContainer.ComponentRegistry.Registrations.Where(x => true); 

你或許應該嘗試禁用插件,看看是否有需要照顧它,因爲它的工作對於我來說足夠了。既然你說你有別人確認它,也許從你的安裝有共同點的任何插件開始。

+0

事實證明,這是未來推薦 – 2013-02-21 22:08:50

0
using System; 
using System.Collections.Generic; 
using System.Linq; 
using System.Text; 
using System.Threading.Tasks; 
using Autofac; 

namespace ConsoleApplication2 
{ 
    class Program 
    { 
    static void Main(string[] args) 
    { 
     // First, create your application-level defaults using a standard 
     // ContainerBuilder, just as you are used to. 
     var builder = new ContainerBuilder(); 
     var appContainer = builder.Build(); 


     var registrations = appContainer.ComponentRegistry.Registrations.Where(x => x.Target.Equals("test")); 
    } 
} 
} 

嘗試分配LINQ表達式給一個變量,看看它是否工作