Ninject:是否可以加载声明为内部的模块

2023-12-22

是否可以配置 Ninject 来加载已声明为的模块internal?

我尝试过配置InternalVisibleTo对于 Ninject 组件,但这没有帮助。

我当然可以制作模块public,但实际上他们应该是internal.


内部KernalBase.Load(IEnumerable<Assembly assemblies)使用GetExportedTypes()它只返回公共类型。

但是,您可以编写自己的“NinjectModule 扫描程序”。

public static class NinjectModuleScanner
{
    public static IEnumerable<INinjectModule> 
        GetNinjectModules(IEnumerable<Assembly assemblies)
    {
        return assemblies.SelectMany(assembly => assembly.GetNinjectModules());
    }
}

public static class AssemblyExtensions
{
    public static IEnumerable<INinjectModule> 
        GetNinjectModules(this Assembly assembly)
    {
        return assembly.GetTypes()
            .Where(IsLoadableModule)
            .Select(type => Activator.CreateInstance(type) as INinjectModule);
    }

    private static bool IsLoadableModule(Type type)
    {
        return typeof(INinjectModule).IsAssignableFrom(type)
            && !type.IsAbstract
            && !type.IsInterface
            && type.GetConstructor(Type.EmptyTypes) != null;
    }
}

然后你可以执行以下操作。

var modules = NinjectModuleScanner.GetNinjectModules(assemblies).ToArray();
var kernel = new StandardKernel();

但该解决方案尚未经过测试。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Ninject:是否可以加载声明为内部的模块 的相关文章

  • Ninject:使用 NSubstitute 自动模拟?

    任何人都可以帮忙 我在使用 Ninject 和 NSubstitute 之间可用的自动模拟时遇到问题 实际上该包是一个名为 ninject 的打包包Ninject MockingKernel NSubstitute这应该允许我使用 Ninj
  • Ninject 在 appharbor 上启动应用程序时崩溃

    我在部署在 appharbor 上的 MVC 3 项目上使用 Ninject 我注意到应用程序启动时出现异常 看起来 Ninject 内部的某些内容是原因 但我找不到任何答案 所以请帮助我 将尝试在此处添加完整的异常 Server Erro
  • 使用 Ninject 具有多个参数的构造函数

    我正在尝试使用Ninject http www ninject org 作为 IoC 容器 但无法理解如何创建在构造函数中具有超过 1 个参数的类的实例 基本上 我有一个用于在 PCL 库中进行身份验证的服务接口 及其在 WP8 项目中的实
  • 让 Ninject 管理我的交易状态,实践关注点

    我让 Ninject 管理我的ISession and ITransaction使用以下注册方法在 Fluent nHibnerate 中进行状态 我想知道它是否足以控制事务 或者我是否需要将其放在其他地方 想法是 每个ISession根据
  • 如何使用 Ninject 将服务注入授权过滤器?

    我正在使用 asp net mvc 3 ninject 2 0 和 ninject mvc 3 插件 我想知道如何将服务层放入我的过滤器中 在本例中是授权过滤器 我喜欢进行构造函数注入 所以这是可能的还是我必须进行属性注入 Thanks E
  • WCF、异步和上下文混乱

    Well I was打算命名这个以及背景问题 但显然这个词question标题中不允许使用 无论如何 这是问题 我使用IErrorHandler在我的 WCF 服务中 以便提供日志记录而不弄乱我的所有服务代码 到目前为止 这种方法效果很好
  • 如何创建一个 Ninject 自定义作用域,在该对象被释放之前返回相同的对象?

    在 Ninject 中 在单例范围内声明绑定意味着每次都会返回相同的对象 永远只能有一个对象 我想要的是一次返回一个对象 换句话说 第一次调用 Get 实例化一个新对象并返回它 对 Get 的后续调用返回相同的实例 该对象已被处置 对象被释
  • 如何将 Ninject 集成到 ASP.NET Core 2.0 Web 应用程序中?

    我发现 Ninject 最近引入了对 NET Standard 2 0 NET Core 2 0 的支持 https www nuget org packages Ninject 3 3 0 但是 我找不到任何扩展来将其实际集成到 Web
  • 使用字符串、反模式的依赖注入(ninject)?

    我有一些代码使用 ninject 注入依赖项 这些依赖项是实际的字符串 例如 这是注入字符串而不是创建新对象的反模式吗 IE 我想注入用户名和密码 创建一个名为 凭证 的小类 其中包含 用户名 和 密码 两个属性并注入它实际上会更好吗 将字
  • 多步骤数据库事务拆分为多个 HTTP 请求

    我过去曾将 TransactionScope 与桌面客户端应用程序一起使用来回滚不完整的多步骤事务 这种方法似乎不太可能在 Web 应用程序中起作用 任何人都可以建议如何在整个过程未完成时确保回滚跨多个页面的多个步骤吗 例如 他们的浏览器崩
  • 无法让 Ninject.Extensions.Interception 工作

    多年来我一直在努力弄清楚这是我们的 当我尝试将我的类与拦截器绑定时 我收到以下异常 Kernel Bind
  • 加载程序集后执行的 C# 方法

    我编写了一些 C 类库 我想使用 Ninject 为我的类提供依赖注入 类库是否可以声明一些在每次加载类库时执行的代码 方法 我需要它来定义 Ninject 的绑定 听起来您正在寻找 C 的 DllMain 的等效项 在 C 中没有办法做到
  • Ninject 3.0 MVC kernel.bind 错误自动注册

    kernel Bind 上的获取和错误scanner gt 在 VS 2010 中 scanner 下面有一条小错误线 无法将 lambda 表达式转换为类型 System Type 因为它不是代表 类型 尝试像 2 0 中的旧 kerne
  • Ninject 当 T 型祖先时绑定

    我有一个大致如下所示的依赖链 public class CarSalesBatchJob public CarSalesBatchJob IFileProvider fileProvider public class MotorcycleS
  • 我正在寻找一个简单但实​​用且强大的 .net IOC/DI 框架

    我将在一个由经验较少的开发人员组成的项目中使用它 因此像 Spring NET 这样的复杂框架不是一个选择 我在想 Ninject 温莎城堡 结构图 哪个会提供适度的学习曲线而不失去灵活性 另一个问题 放置配置的正确位置在哪里 由于 3 层
  • 如何使用 Ninject InRequestScope 处理异步调用?

    我们正在使用Ninject in an ASP NET Web API应用程序 然后我们绑定我们的DbContext with InRequestScope 这对于我们的大多数请求都很有效 因为它们同步完成所有工作 因此可以在请求完成后安全
  • Ninject - 找不到资源

    我收到错误 无法找到该资源 当我尝试在我的 MVC 3 应用程序中实现 Ninject 时 该问题似乎来自 Global asax 期间CreateKernel region Inversion of Control protected o
  • 在Application_Start中访问ninject内核

    我正在使用 Ninject 和随 nuget 安装的 MVC3 扩展 我的内核设置代码位于 App Start NinjectMVC3 cs 文件中 控制器中的一切都运行良好 但我无法弄清楚如何 正确 绑定 Global asax cs M
  • MVC3、Ninject、MvcSiteMapProvider - 如何将依赖项注入到重写方法

    我有一个正在使用的 MVC3 应用程序Ninject http ninject org and Mvc站点地图提供者 http mvcsitemap codeplex com 我创建了此类 MvcSiteMapProvider 使用它来动态
  • 验证属性被触发两次

    在我的 MVC3 应用程序中 我有模型 未删除重要属性 public class AccountViewModel StringLength 65 public string Property1 get set StringLength 6

随机推荐