小编use*_*376的帖子

温莎 - 从容器中拉出瞬态物体

如何从容器中拉出瞬态物体?我是否必须在容器中注册它们并注入需要类的构造函数?将所有内容注入构造函数中感觉不太好.也只是为了一个类,我不想创建一个TypedFactory并将工厂注入需要的类.

我想到的另一个想法是根据需要"新"起来.但我也在我的Logger所有类中注入一个组件(通过属性).因此,如果我新建它们,我将不得不手动实例化Logger这些类.如何继续为我的所有课程使用容器?

记录器注入:我的大多数类都Logger定义了属性,除非存在继承链(在这种情况下,只有基类具有此属性,并且所有派生类都使用该属性).当这些通过Windsor容器实例化时,它们会将我的实现ILogger注入其中.

//Install QueueMonitor as Singleton
Container.Register(Component.For<QueueMonitor>().LifestyleSingleton());
//Install DataProcessor as Trnsient
Container.Register(Component.For<DataProcessor>().LifestyleTransient());

Container.Register(Component.For<Data>().LifestyleScoped());

public class QueueMonitor
{
    private dataProcessor;

    public ILogger Logger { get; set; }

    public void OnDataReceived(Data data)
    {
        //pull the dataProcessor from factory    
        dataProcessor.ProcessData(data);
    }
}

public class DataProcessor
{
    public ILogger Logger { get; set; }

    public Record[] ProcessData(Data data)
    {
        //Data can have multiple Records
        //Loop through the data and create new set …
Run Code Online (Sandbox Code Playgroud)

.net dependency-injection castle-windsor ioc-container

57
推荐指数
1
解决办法
2万
查看次数

Castle ResolveAll返回空数组

这是我的程序集(TestAssembly)的外观

Class BaseClass
{
....
....
}

Interface I1
{
....
....
}

Interface I2 : I1
{
....
....
}
Interface I3 : I1
{
....
....
}
Class A : BaseClass, I2
{
....
....
}

Class B : BaseClass, I3
{
....
....
}
Run Code Online (Sandbox Code Playgroud)

我正在使用Castle Windsor来注册和解决所有这些组件.

container.Register(AllTypes.FromAssemblyNamed("TestAssembly")
                            .BasedOn<I1>()
                            .LifestyleSingleton());
Run Code Online (Sandbox Code Playgroud)

我试图解决所有类型的I1(接口I1)使用

container.ResolveAll<I1>();
Run Code Online (Sandbox Code Playgroud)

希望得到一个对象A和B的数组.相反,我得到一个空数组.怎么了?

.net c# castle-windsor

3
推荐指数
1
解决办法
2054
查看次数

解码 ASN.1 - PKCS#7 非分离签名

我对 ASN.1 格式还很陌生。我有一个 PKCS#7 签名,在执行 ASNdump 后,它看起来如下所示。有人可以帮助我理解下面每个元素的含义吗?我只能识别签名中的 2 个证书,但无法确认哪一个用于什么用途。如果您能阐明我应该如何解码、验证此签名并解密数据,我也将不胜感激。

  0 904: SEQUENCE {
  4   9:   OBJECT IDENTIFIER signedData (1 2 840 113549 1 7 2)
 15 889:   [0] {
 19 885:     SEQUENCE {
 23   1:       INTEGER 1
 26  11:       SET {
 28   9:         SEQUENCE {
 30   5:           OBJECT IDENTIFIER sha1 (1 3 14 3 2 26)
 37   0:           NULL
       :           }
       :         }
 39 404:       SEQUENCE {
 43   9:         OBJECT IDENTIFIER envelopedData (1 2 840 113549 1 7 3)
 54 …
Run Code Online (Sandbox Code Playgroud)

.net c# cryptography asn.1 pkcs#7

3
推荐指数
1
解决办法
2587
查看次数