C# Castle.Windsor 3.1-组件激活器:无法代理<;工厂名称>;
我正在从2.5.1版升级到3.1.0版的过程中,以前可以使用的功能已经不复存在。我正在尝试解析一个工厂,它创建使用泛型的组件。引发的错误是“ComponentActivator:无法代理”,其中是无法解析的工厂名称C# Castle.Windsor 3.1-组件激活器:无法代理<;工厂名称>;,c#,.net,entity-framework,castle-windsor,C#,.net,Entity Framework,Castle Windsor,我正在从2.5.1版升级到3.1.0版的过程中,以前可以使用的功能已经不复存在。我正在尝试解析一个工厂,它创建使用泛型的组件。引发的错误是“ComponentActivator:无法代理”,其中是无法解析的工厂名称 public class MyObject { } public class MyContext { } public class DummyComponent<T> : IDummyComponent<T> where T : MyObject { }
public class MyObject { }
public class MyContext { }
public class DummyComponent<T> : IDummyComponent<T> where T : MyObject { }
public interface IDummyComponent<T> { }
public interface IDummyComponentFactory
{
IDummyComponent<T> Create<T>(object o);
}
class Program
{
static void Main(string[] args)
{
var windsorContainer = new WindsorContainer();
windsorContainer.AddFacility<TypedFactoryFacility>()
.Register(
Component.For(typeof(IDummyComponent<>)).ImplementedBy(typeof(DummyComponent<>)),
Component.For<IDummyComponentFactory>().AsFactory());
var factory = windsorContainer.Resolve<IDummyComponentFactory>(); <-- Error Occurs Here
var myDummyComponent = factory.Create<MyObject>(new object());
}
}
我试着运行你的代码,但它在我的机器上运行
这似乎是Intellitrace的一个问题,可以通过禁用它来解决:
- 工具->选项->智能跟踪(取消选中启用智能跟踪)
找到了一个引用,引用了其他人拥有的。可爱!哈哈,我再试试。在我的测试项目和上面的示例应用程序(代码)中失败。我觉得这有点奇怪,因为我有另一个项目,这是工作,所以也许我的电脑只是需要休息。我会随时通知你的。Krzysztof-我更新了问题以包含内部异常。我还发布了关于我如何解决这个问题的答案(感谢一篇类似的帖子;不同的图书馆)。由于Intellitrace启用时2.5.1工作正常,而3.1.0失败,因此我假设库中的某些内容与此功能有关。我现在不使用Intellitrace,所以不使用它也没什么大不了的。我也尝试过,但它不起作用。。我也有同样的问题。。在这里查看我的代码
public virtual IEnumerable<T> Where(Expression<Func<T, bool>> predicate, bool showDeleted = false, MergeOption mergeOption = MergeOption.AppendOnly)
{
if (typeof(IDeletable).IsAssignableFrom(typeof(T)))
{
var factory = Container.Instance.Resolve<IDeletableRepositoryFactory>();
var repository = factory.GetDeletableRepository<T>(EntityContext);
return repository.Where(predicate, showDeleted, mergeOption);
}
return GetObjectSet(mergeOption).Where(predicate);
}
System.Security.VerificationException
{"Operation could destabilize the runtime."} at
Castle.MicroKernel.Proxy.ProxyOptions.get_MixIns() in
c:\BuildAgent\work\5b096cace0fecb1f\src\Castle.Windsor\MicroKernel\Proxy\ProxyOptions.cs:line 96 at
Castle.Windsor.Proxy.DefaultProxyFactory.CreateProxyGenerationOptionsFrom(ProxyOptions proxyOptions, IKernel kernel, CreationContext context, ComponentModel model) in
c:\BuildAgent\work\5b096cace0fecb1f\src\Castle.Windsor\Windsor\Proxy\DefaultProxyFactory.cs:line 178 at
Castle.Windsor.Proxy.DefaultProxyFactory.Create(IKernel kernel, Object target, ComponentModel model, CreationContext context, Object[] constructorArguments) in
c:\BuildAgent\work\5b096cace0fecb1f\src\Castle.Windsor\Windsor\Proxy\DefaultProxyFactory.cs:line 105 at
Castle.MicroKernel.ComponentActivator.DefaultComponentActivator.CreateInstance(CreationContext context, ConstructorCandidate constructor, Object[] arguments) in
c:\BuildAgent\work\5b096cace0fecb1f\src\Castle.Windsor\MicroKernel\ComponentActivator\DefaultComponentActivator.cs:line 123`