Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 检索当前程序集或';激活上下文';来自Autofac_C#_.net_Dependency Injection_Autofac_.net Assembly - Fatal编程技术网

C# 检索当前程序集或';激活上下文';来自Autofac

C# 检索当前程序集或';激活上下文';来自Autofac,c#,.net,dependency-injection,autofac,.net-assembly,C#,.net,Dependency Injection,Autofac,.net Assembly,我有一个从程序集的基本目录加载文件的服务: // pseudo class FileLoaderService : IFileLoader { var _baseAssembly; .ctor(Assembly baseAssembly) { _baseAssembly = baseAssembly; } Stream LoadFile(string name) { return GetFileStream(_baseAsse

我有一个从
程序集的基本目录加载文件的服务:

// pseudo
class FileLoaderService : IFileLoader {

    var _baseAssembly;

    .ctor(Assembly baseAssembly) {
        _baseAssembly = baseAssembly;
    }

    Stream LoadFile(string name) {
        return GetFileStream(_baseAssembly.Location + path);
    }
}
此服务被注入位于不同程序集中的各种其他已解析服务(有些在编译时未知,但在运行时加载)。现在,我想在解析
IFileLoader
时提供当前程序集(例如,解析的目标类型所在的程序集)的参数

我尝试了这两种方法,使用工厂委托注册
FileLoaderService
,以及
ResolvedParameter
,但是这两种方法都只提供当前的
IComponentContext
,它不提供有关注入目标类型的任何信息

我要找的是这样的东西:

containerBuilder.Register(context => {
    var targetType      = context.Target.TargetType; // does not exist
    var hostingAssembly = targetType.Assembly;
    return new FileLoaderService(hostingAssembly);
}).As<IFileLoader>();

Target
在本例中是直接注入
IFolderLoader
的类?@YacoubMassad。举例说明。:)你能根据自己的需要来调整产品吗?或者从中得到一些想法?
// pseudo
class SomeTypeInAnotherAssembly

    .ctor(IFileLoader loader) {
        var fileStream = loader.LoadFile("test.png");
        // the file stream is now loaded from the base directory of AnotherAssembly.dll
        // since the injected IFileLoader was constructed using the assembly
        // of SomeTypeInAnotherAssembly
    }