我正在使用Autofac(我在控制台应用程序中注册了基础nuget包)并希望查看注册列表。
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);
这里intellisense没有给我Where where linq方法,但是它确实编译到我没有任何警告,消息中的错误。
我进一步尝试了这个
IEnumerable<string> list = new List<string>();
list.Where(x => true);
intellisense工作正常,并给我所有标准的列表方法。
我已经从头开始在几个不同的应用程序中尝试过此操作,但我得到了同样的行为。
关于最新情况的任何想法?
编辑:
以下作品在智能感知中正确显示
IEnumerable<IComponentRegistration> test = new List<IComponentRegistration>();
test.Where(x => true);
我正在使用
来自nuget的 <package id="Autofac" version="3.0.1" targetFramework="net45" />
。
并将鼠标悬停在ComponentRegistrations上
在这种情况下,范围定义为
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 :(得分: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表达式分配给变量并查看它是否有效
答案 1 :(得分:0)
复制评论以回答。
如果我理解正确,你的问题是智能感知不起作用
appContainer.ComponentRegistry.Registrations.Where(x => true);
你应该尝试禁用你的插件,看看是否能解决它,因为它对我来说很好。既然你说你有其他人确认它,也许从你的装置有共同点的任何插件开始。