城堡 - 注册未知实施

时间:2016-03-24 07:19:34

标签: c# .net inversion-of-control castle-windsor castle

我对IoC和Castle很新,我很难通过实现的界面注册课程。

在我的应用程序中,有几个程序集,每个程序集都有一个实现接口 IErrorCodes 的类。在运行时,确定是否存在一个(最多)这些程序集/类,并且总是存在 DefaultErrorCodes 类,当没有真正的实现时,应该使用该类。

以下代码导致实现(例如 UkErrorCodes )存在于容器的 Services 部分中,但是当应用程序到达实现的部分时Castle会出错 IErrorCodes 应该被注入"你忘了代理它"

container.Register(
    Classes.FromAssemblyInDirectory(new AssemblyFilter("bin")).
                BasedOn<IErrorCodes>().
                Unless(t=> t.IsAbstract).
                WithServiceBase(),
    Component.For<IErrorCodes>()
               .IsFallback(c => c == typeof(DefaultErrorCodes)).LifestyleSingleton());

1 个答案:

答案 0 :(得分:0)

对我有用的解决方案:

panic: runtime error: invalid memory address or nil pointer dereference
[signal 0xb code=0x1 addr=0x0 pc=0x236ffe]

goroutine 1 [running]:
panic(0x4743c0, 0xc82000a0e0)
    /usr/local/Cellar/go/1.6/libexec/src/runtime/panic.go:464 +0x3e6
github.com/aws/aws-sdk-go/service/s3.validateSSERequiresSSL(0xc820066380)
    /Users/name/work/src/github.com/aws/aws-sdk-go/service/s3/sse.go:15 +0x17e
github.com/aws/aws-sdk-go/aws/request.(*HandlerList).Run(0xc820066478, 0xc820066380)
    /Users/name/work/src/github.com/aws/aws-sdk-go/aws/request/handlers.go:136 +0xc3
github.com/aws/aws-sdk-go/aws/request.(*Request).Build(0xc820066380, 0x0, 0x0)
    /Users/name/work/src/github.com/aws/aws-sdk-go/aws/request/request.go:189 +0x69
github.com/aws/aws-sdk-go/aws/request.(*Request).Sign(0xc820066380, 0x0, 0x0)
    /Users/name/work/src/github.com/aws/aws-sdk-go/aws/request/request.go:210 +0x31
github.com/aws/aws-sdk-go/aws/request.(*Request).Send(0xc820066380, 0x0, 0x0)
    /Users/name/work/src/github.com/aws/aws-sdk-go/aws/request/request.go:261 +0x6f4
github.com/aws/aws-sdk-go/service/s3/s3manager.(*uploader).singlePart(0xc8201520f0, 0x8bb980, 0xc82014a030, 0xc82000a140, 0x0, 0x0)
    /Users/name/work/src/github.com/aws/aws-sdk-go/service/s3/s3manager/upload.go:449 +0x1fc
github.com/aws/aws-sdk-go/service/s3/s3manager.(*uploader).upload(0xc8201520f0, 0xc8201520f0, 0x0, 0x0)
    /Users/name/work/src/github.com/aws/aws-sdk-go/service/s3/s3manager/upload.go:355 +0x563
github.com/aws/aws-sdk-go/service/s3/s3manager.Uploader.Upload(0x500000, 0x5, 0x0, 0x2710, 0xe00240, 0xc820156018, 0xc82016e000, 0x0, 0x0, 0x0, ...)
    /Users/name/work/src/github.com/aws/aws-sdk-go/service/s3/s3manager/upload.go:329 +0x15a
main.main()
    /Users/name/work/src/gitlab.com/user/project/test/main.go:39 +0x59f
exit status 2
相关问题