直到最近,我使用了AutoFac,它的方法是AsImplementedInterfaces(),它可以
将类型注册为将其所有公共接口作为服务提供(不包括IDisposable)。
这意味着(例如,服务)我有一些基本接口和每个协奏曲服务类的接口。
请参阅下面的简单代码:
public interface IService {}
public interface IMyService: IService
{
string Hello();
}
public class MyService: IMyService
{
public string Hello()
我试图在存储库中使用autofac,并且我试图添加一些泛型来尝试减少重复代码的数量,我是writing.However,我正在绕圈,试图让autofac为我工作。
因此,我创建了一个域服务和接口来处理我们的标准crud操作。
public class DomainService<T>:IDomainService<T>
{
protected readonly IDomainService<T> Repository;
public DomainService(IDomainService<T> repository)
我希望用autofac属性注入注册,但无法成功注入ClassA属性= null.Not,如何更改我的代码 public interface IRepository
{
}
public class Repository : IRepository
{
public Repository()
{
}
} 这是我的基类 public class RepositoryBase : Repository
{
public ClassA ClassA { get; set; }
public RepositoryBase()
{
我正在寻找一个简单的DI "Hello World“示例的帮助。我不明白的是如何在DI框架(autofac)中初始化类"Foo“和"Bar”。
namespace AutofacTesting
{
//these classes are intended to be used with autofac / DI
public interface IFooBar
{
void Draw();
}
public class Bar : IFooBar
{
public v
我试图为我的项目(XUnit)编写集成测试,该项目使用Autofac实现依赖注入。具体来说,我正在尝试测试我的服务层。
这就是为什么我实现了一个“内核”类,它注册所有组件,并有一个返回参数中请求的组件的方法。
public class TestKernel
{
private readonly IContainer container;
public TestKernel()
{
var builder = new ContainerBuilder();
builder.RegisterM
Global.asax.cs文件,其中我放置了依赖项并注册了webAPI控制器。
using Autofac;
using Autofac.Integration.Mvc;
using Autofac.Integration.WebApi;
using StructureMap;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Http;
using System.Web.Mvc;
using System.Web.Optimizatio
我试图以真正的OOP方式实现一个简单的服务。对我来说,这意味着域对象没有技术或非业务相关的方法(实际上没有getter/setter)。
以下是要实现的域接口:
public interface Person {
void register();
void changeName(String name);
}
public interface Persons {
Person register(String name);
Person findByName(String name);
}
解决方案#1
@AllArgsConstructor
public cl
在下面的代码示例中,Debug.Assert将失败。
如果从IBreaker注册中删除AsImplementedInterfaces()扩展,则foo.Bar不为null。为什么会这样呢?
using System;
using System.Diagnostics;
using System.Reflection;
using Autofac;
namespace AutoFacTest
{
class Program
{
static void Main(string[] args)
{
var builder = new ContainerBuilder
我是Autofac的长期用户,最近为了满足DI容器的需要,我改用了简单的喷射器。当我使用Autofac时,我仍然能够用简单的喷射器做一些我仍然不能做的事情,也许是因为我还没有完全理解这个API。
假设我拥有服务IEntityRepository of TEntity和TDbContext。它的实现如下所示:
public class EntityRepository<TEntity, TDbContext> : IEntityRepository<TEntity, TDbContext>
where TDbContext : IEntit
我有一个Asp.Net API (.NET Framework4.7.2)。我们最近将Autofac更新为6.2.0版本。Autofac不喜欢我们没有公共构造函数的类。
示例类:
public sealed class User
{
private static readonly Lazy<User> Lazy = new Lazy<User>(() => new User());
public static User Instance => Lazy.Value;
private User()
{
}
我要在一个单元测试中实例化这个类:
public class Customer
{
internal Customer(Guid id) {
// initialize property
}
}
如果我使用new Customer()实例化来自另一个(单元测试)程序集的测试类,因为我添加了[assembly: InternalsVisibleTo("MyProject.Tests")]
var sut = new Customer(Guid.NewGuid()); // works
但是当我在另一个(单元测试)程序集中设置一个autofac容器时
在阅读来自的java 8默认方法时,我看到了以下段落
如果层次结构中的任何类都有一个具有相同签名的方法,那么默认方法就变得不相关了。默认方法不能覆盖java.lang.Object中的方法。原因很简单,因为Object是所有java类的基类。因此,即使我们在接口中将对象类方法定义为默认方法,它也将毫无用处,因为对象类方法将始终被使用。这就是为什么为了避免混淆,我们不能拥有覆盖对象类方法的默认方法。
我迅速地尝试了下面的代码来确认行为。
public class DefaultMethodClass {
public void defaultMethod()
{