我在.Net Core2.1应用程序中使用Autofac。我有一个类,它的方法可以直接使用new关键字实例化类型,因此它与特定的实现相关联。如何使用Autofac而不是new解析类型?该方法创建一个类型Engine的对象,并将其添加到类型IEngine的集合中,其中Engine实现了IEngine。因此构造函数或方法解析不起作用。
下面是示例代码:
public class Vehicle<T1> : IVehicle<T1>
{
private Dictionary<string, IEngine<T>> Engines = new D
我刚开始使用基于Autofac的依赖注入。根据我们公司的要求,我必须在我正在创建的新的网络API中使用它。下面是我的代码。我使用Autofac的IocConfig类在Web中创建和注入对象。
public class MemberCodeController : ApiController
{
private IMemberStrategy memberStrategy;
private IMemberDetail memberDetail;
//Constructor dependency injection through Autofac
public M
我需要在代码和中实现一个似乎符合我的需求的单例模式。
public sealed class Singleton
{
private static readonly Singleton instance = new Singleton();
// Explicit static constructor to tell C# compiler
// not to mark type as beforefieldinit
static Singleton()
{
}
private Singleton()
{
}
public static Singleton Instance
{
假设我有一个服务器端应用程序,它广泛使用线程安全组件。我没有在每次需要时创建一个新的组件实例,而是使用Autofac在系统启动时注册、管理和解析该组件的单个实例,如所述的。
现在我的问题是:如果尽管进行了Autofac注册,但是这个组件的新实例是以编程方式初始化的(ComponentName c = new ComponentName();),那么会发生什么情况呢?
以下是我的假设:
(案例1)如果初始化语句是属于为其定义了Autofac DI容器的应用程序程序集的源代码的一部分,Autofac将返回组件的已注册单例实例。
(案例2)如果初始化语句属于外部第三方库的源代码,那么每次执行该语句时
假设我有以下内容:
public class Test
{
public IDependency Dependency { get; set; }
}
IDependency和Test在我的Autofac构建器中注册。我的IDependency分辨率很好,但是我想要实现的是能够在代码中返回新的Test实例(例如return new Test();),并让它的IDependency属性由Autofac预先填充。
我在我的容器里尝试过的:
builder.Register(x => new Test {
x.Resolve<IDependency>()
});
在我的解决方案中,我使用的是Autofac和Prism。下面是一个简单的项目,它解释了发生了什么。
我在Autofac的容器类中注册视图、视图模型和:
public class BootStrapper
{
public IContainer BootStrap()
{
var builder = new ContainerBuilder();
builder.RegisterType<EventAggregator>()
.As
我使用C#和Autofac 4.9.4。我有一个Autofac模块,它连接到IComponentRegistration.Activated事件。它查找某些类的激活实例,并在某些manager类中注册它们。当然,这种注册应该限于受影响对象的生存期。因此,模块需要知道对象何时被容器丢弃,然后从管理器中注销。否则我会产生内存泄漏。当我向autofac ContainerBuilder注册类时,有一个OnRelease,但这不是正确的地方;我需要模块中的这样一个事件。
具体代码如下所示:
using Autofac;
using Autofac.Core;
namespace De.Gedat.F
我有一个Autofac模块,如下所示
public class ServiceInjector:Module
{
protected override void Load(ContainerBuilder builder)
{
// many registrations and type looking up here
...
// One of the registration, say t which is found
我试图从其他进程访问C#对象,而不是通过COM访问它们所在的进程。C#对象公开给COM。
问题是,当我在这些对象上调用一个方法时,调用是在本地执行的,而不是在outproc服务器上执行,在那里我希望这些调用产生副作用。
更确切地说,下面是我在试图访问驻留在outproc服务器中的对象的过程中所做的工作:
Type oType = Type.GetTypeFromProgID("myProgId");
var obj = Activator.CreateInstance(oType);
var result = oType.InvokeMember("GetObjFo
我是autofac的新手。我正在我的新web api 2项目中使用它。下面是由Global.asax的Application_Start()方法调用的autofac配置代码。我不确定我对InstancePerRequest()的用法是否正确。更重要的是,它甚至需要使用吗?或者,我应该使用其他选项,如InstancePerLifeTimeScopre()或InstancePerDependency()?无论我是否使用这些生命周期范围选项中的任何一个,在调试期间,它们都会产生相同的结果。 public class IocConfig
{
//Autofac configuration
public JsonResult GetEvents(double start, double end)
{
var userName = Session["UserName"] as string;
if(string.IsNullOrEmpty(userName))
{
return null;
}
var fromDate = ConvertFromUnixTimestamp(start);
var toDate = ConvertFromUnixTimestamp(end);
var rep =