2013-02-20 1 views
1

J'utilise Autofac (j'ai enregistré le paquet de base de nuget dans une application de console) et je veux jeter un coup d'œil à une liste d'enregistrements.LINQ ne fonctionne pas sur 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); 
     } 
    } 
} 

Le problème est la ligne

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

Ici IntelliSense ne me donne pas les cas où la méthode LINQ mais il ne compile pour autant que je peux dire sans aucun avertissement, les erreurs dans les messages.

J'ai essayé plus bas

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

    list.Where(x => true); 

Et IntelliSense fonctionne correctement et de me donner toutes les méthodes de liste standard.

J'ai essayé ceci dans quelques applications différentes à partir de zéro et j'ai le même comportement.

Des idées sur ce qui se passe?

EDIT:

Les travaux suivants et montre correctement dans IntelliSense

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

J'utilise

<package id="Autofac" version="3.0.1" targetFramework="net45" /> de NuGet.

et planant au-dessus des ComponentRegistrations donne enter image description here

et dans ce champ de cas est défini comme

ILifetimeScope _scope; 

Cependant, je reçois la même chose si je tente directement sur ce

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

Aussi IComponentRegistry est défini comme (en Autofac)

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

J'ai demandé à quelqu'un d'autre d'essayer cela et ils ont le même problème –

+0

J'ai également téléchargé une démo qui montre que l'intellisense ne fonctionne pas https://dl.dropbox.com/u/78170732/ConsoleApplication1.zip –

+0

Si je vous ai bien compris et que votre problème est que intellisense ne fonctionne pas sur la ligne appContainer.ComponentRegistry.Registrations.Où (x => vrai); Vous devriez probablement essayer et désactiver vos addons et voir si cela prend soin de lui comme ça fonctionne bien pour moi. Puisque vous dites que quelqu'un d'autre l'a confirmé, commencez par les addons que vos installations ont en commun. –

Répondre

0

Commentaire copié pour répondre.

Si je vous ai bien compris et votre problème est que IntelliSense ne fonctionne pas sur la ligne

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

Vous devriez probablement essayer de désactiver addons et voir si cela prend soin comme il travaille bien pour moi. Puisque vous dites que quelqu'un d'autre l'a confirmé, commencez par les addons que vos installations ont en commun.

+0

s'avère qu'il a été resharper pour future refernce –

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")); 
    } 
} 
} 

Essayez d'attribuer l'expression LINQ à une variable et voir si cela fonctionne