C# Castle.Windsor 3.1-组件激活器:无法代理<;工厂名称>;

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 { }

我正在从2.5.1版升级到3.1.0版的过程中,以前可以使用的功能已经不复存在。我正在尝试解析一个工厂,它创建使用泛型的组件。引发的错误是“ComponentActivator:无法代理”,其中是无法解析的工厂名称

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`