我正在处理我买的书中的样本。并且,由于未知原因,我收到以下错误消息“无法找到源类型'System.Type'的查询模式的实现。''找不到的地方。”
VS2008帮助说我需要添加System.Linq和System.Collections命名空间来解决问题。不幸的是,我仍然得到相同的错误消息。在MSDN论坛中,它说我需要将EnforceConstraints设置为true;
我想知道什么是“EnforceConstraints”,我该怎么做。
感谢。
使用System; 使用System.Data; 使用System.Configuration; 使用System.Linq; 使用System.Web; 使用System.Web.Security; 使用System.Web.UI; 使用System.Web.UI.HtmlControls; 使用System.Web.UI.WebControls; 使用System.Web.UI.WebControls.WebParts; 使用System.Xml.Linq; 使用System.Web.Mvc; 使用Castle.Windsor; 使用Castle.Windsor.Configuration.Interpreters; 使用Castle.Core.Resource; 使用System.Reflection; 使用Castle.Core; 使用System.Collections;
命名空间WebUI { public class WindsorControllerFactory:DefaultControllerFactory { WindsorContainer容器;
public WindsorControllerFactory()
{
//Instatiate a container, taking configuration from web.conf
Container = new WindsorContainer(
new XmlInterpreter(new ConfigResource("Castle"))
);
//Also register all the controller types as transient
var controllerTypes =
from t in Assembly.GetExecutingAssembly().GetType()
where typeof(IController).IsAssignableFrom(t)
select t;
foreach (Type t in controllerTypes)
Container.AddComponentWithLifestyle(t.FullName, t, LifestyleType.Transient);
}
//Constructs the controller instance needed to service each request
protected override IController GetControllerInstance(Type controllerType)
{
return (IController)Container.Resolve(controllerType);
}
}//The constructor
}
样本在第98页。
这本书是“Pro ASP.NET MVC Framework”/ Steven Sanderson / APress ISBN-13(pbk):978-1-4302-1007-8
答案 0 :(得分:1)
这表明你正在尝试做类似的事情:
Type type = typeof(int);
var methods = from method in type
select method;
System.Type
中没有定义“选择”方法或作为扩展方法 - 基本上Type
不是LINQ查询的有效数据源。你可以发布完整的例子(理想情况下它来自哪本书)?它可能只是一个错字 - 无论是你复制的还是书本身。
from t in Assembly.GetExecutingAssembly().GetType()
你应该
from t in Assembly.GetExecutingAssembly().GetTypes()
注意最后的“s”:)
GetType()
返回对象的类型(即typeof(Assembly)
或某个子类),而GetTypes()
返回类似的集合。后者绝对是你想要的。
答案 1 :(得分:1)
在行中:
from t in Assembly.GetExecutingAssembly().GetType()
你在GetTypes()
结束时错过了's'。这应该可以解决问题,因为GetType()
返回单个Type
实例,而GetTypes()
返回Type
个对象数组。