我对Dagger2比较陌生,而且我一直遇到Dagger2中的编译器错误,说缺少@Provide或@Produces。我尝试做的是在基类中注入公共组件,然后子类也有自己的组件。我在网上查看了几个示例,看到人们使用子组件;但我仍然不明白为什么每个类只能有多个独立的组件?我不明白为什么我的ImageComponent必须是ApiComponent的子组件,这没有任何意义。所以我想知道关于这个问题的正确方法是什么,或者有没有我不知道的其他方法?谢谢。
Api Component
public interface UserApi {
int getUser();
}
public inter
我正在做一些依赖注入+ mvc的测试,我有一个问题。
在服务内部,我如何创建一个对象(槽接口),这将是方法的结果?
我发现抽象工厂可以解决这个问题,但是有人说它是一个反模式,是一个服务定位器。
我做过这样的事:
public class ObjectFactory : IFactory
{
readonly Container container;
public ObjectFactory(Container container)
{
this.container = container;
}
public T Create<
我创建了一个类AppConfig:
public class AppConfig
{
private readonly IConfigurationRoot _configurationRoot;
public AppConfig()
{
var builder = new ConfigurationBuilder()
.SetBasePath(Package.Current.InstalledLocation.Path)
.AddJsonFile("appsettings.json",
我试图从静态运行非静态方法,并在非静态方法中使用依赖注入。(我正在尝试在一个类中完成此操作)
我的代码如下所示:
public class Tokens
{
private IRefreshTokenRepository refreshTokenRepository;
public Tokens(IRefreshTokenRepository refreshTokenRepository)
{
this.refreshTokenRepository = refreshTokenRepository;
}
// I understand
我正在阅读和这个想法是如何看起来非常有用的。通过添加更多的方法并使类成为抽象的,我增加了IFormHandler的概念。
public abstract class FormHandler<T>
{
private readonly UnitOfWork unit;
public FormHandler(UnitOfWork unit)
{
this.unit = unit;
}
protected UnitOfWork Unit
{
get
{
return
我有一个包含"ID“字段的接口"I”。通过该接口,我有实现它的对象A、B、C、D。在一个完全独立的类数据库中,我有4个名为Foo的方法,它们分别对A、B、C和D进行操作。
在为Foo编写一个方法时,我注意到我一遍又一遍地编写相同的代码,该方法操作一堆包含我的子类缓存的Dictionary对象。看起来像是
foreach(A in ACache.Values)
{
int ID = A.ID;
Database.Foo(A);
int newID = A.ID;
Bar(A);
}
我必须对我所有的缓存都这样做,总共大约有11个,所以我正在尝试编写
我正在开发一个库,它将帮助实现各种应用程序的专用服务器(我的主要目标是游戏)。我正在使用套接字,我想实现某种类型的命令系统,其中用户将能够调用服务器上的函数。我有一个问题,因为我想让用户在他创建的类中实现可交互的命令环境,我的库需要了解这个类。我创建了这个模板示例,说明它是如何构建的:
由我实现,库的一部分(非常简单):
public class UserInfo //class containing info about user
{
public int id;
public UserInfo(int _id)
{
id = _id;
}
我第一次尝试使用Repository模式构建一个新的应用程序,我对使用Repository感到有点困惑。假设我有以下类:
public class Ticket
{
}
public class User
{
public List<Ticket>AssignedTickets { get; set; }
}
public class Group
{
public List<User> GroupMembers { get;set; }
public List<Ticket> GroupAssignedTickets { get;set;
示例:
public class BusinessTransactionFactory<T> where T : IBusinessTransaction
{
readonly Func<Type, IBusinessTransaction> _createTransaction;
public BusinessTransactionFactory(Func<Type, IBusinessTransaction> createTransaction)
{
_createTransaction = createTra
注意到MongoDB有不同的关键字,如InsertOne、ReplaceOne等。Linq ()的一个特点是有一种通用语言,人们可以在这种语言中使用依赖注入和NoSQL之间的交换,而不需要大量改变语法。SQL使用.Add()和Remove()。
有什么简单的方法可以让这两种语言有相似的语法吗?
SQL:
MongoDB:
public BookService(IConfiguration config)
{
var client = new MongoClient(config.GetConnectionString("BookstoreDb"))
我在处理大型遗留项目。我已经开始用xUnit编写单元测试。另外,我使用的是Moq框架。我在这里读了很多文章,但没有找到明确的答案。我一直在理解如何对测试方法中的两个IDisposable对象进行模拟?我想测试的方法是:
public class SomeService: ISomeService
{
...
public async Task<Settings> GetSettings(UserIdentity user)
{
SettingsDBModel dbModel;
using (DBHelperAsync dbHelper
我有一个标准的Spring应用程序,包含许多实体和相应的存储库和服务。组件之间有很多共享的基础设施,所以我想将其抽象为泛型类。我目前试图实现的方式是这样的(只展示了传达想法的骨架):
interface AbstractRepository<T> {
fun findById(entityId: Long): T
}
abstract class AbstractEntityService<T>(
private val entityRepository: AbstractRepository<T>,
) {
fun getEntity
在使用构造函数时不会调用控制器操作方法。
这是启动类。
public class Startup
{
public Startup(IHostingEnvironment env)
{
var builder = new ConfigurationBuilder()
.SetBasePath(env.ContentRootPath)
.AddJsonFile("appsettings.json", optional: true, reloadOnChange: true)
.
我有以下存储库类:
public class TestRepository : Repository<Test>
{
private TestContext _context;
public TestRepository(TestContext context) : base(context)
{
_context = context;
}
}
public abstract class Repository<T> : IRepository<T> where T : Entity
{
privat
我接手了一个还处于起步阶段的代码库,并无意中发现了这个类。我只是想知道是否值得拥有一个SingletonProvider,如果它要立即返回值的话,那么使用Lazy<T>吗?
public static class SingletonProvider
{
private static readonly ConcurrentDictionary<Type, Lazy<object>> Instances = new ConcurrentDictionary<Type, Lazy<object>>();
public st
我已经使用StructureMap一年多了。一直以来,我都有一个名为IoC的包装器类,它看起来像这样
class IoC {
public static T GetInstance<T>()
{
return (T)GetInstance(typeof(T));
}
public static IEnumerable<T> GetAllInstances<T>()
{
return ObjectFactory.GetAllInstances<T>();
}
我刚刚用Utility完成了一个java应用程序,然后我在周末阅读了一些关于坚实原则的文章,所以我正在重构整个应用程序来遵循这个原则。有一个问题是我在尝试时遇到的,因此,我一定是做错了,所以有人能把我引向正确的道路吗?示例:
public interface ID { }
public class D implements ID {
//this class has a lot of dependencies that I do not want in class B but at some point
// I have to create it. When is that poin
假设以下服务类:
class A {}
class B {}
class C {}
现在,Class A获得了对Class B的依赖。所以我只注射了Class B。在以后的开发中,我的Class A也需要Class C。(这可能会持续下去.)
注入依赖容器以便能够根据需要使用所有服务更好吗?还是只通过注入我需要的类来保持服务类的小?
这里的最佳做法是什么,为什么?
目前,我倾向于注入所需的每个依赖服务,主要是在一个地方看到依赖关系(标头中的DI注释)。
请不要因为“意见基础”这个问题是为了最佳实践,这必须是一个意见,但当大多数用户有相同的意见,然后它是一个最佳做法。
我需要在静态类中获取或访问我的IoC容器。这是我的(简化)场景:
我在启动类中注册ASP的依赖项(但我也为.net或WCF.我有一个DependecyResolver项目,但为了简单起见,请考虑以下代码)
// Web Api project - Startup.cs
public void Configuration(IAppBuilder app)
{
HttpConfiguration config = new HttpConfiguration();
var builder = new ContainerBuilder();
// ... Omited fo
所以我有一个软件,里面有一个早午餐的服务类。这些服务通过各自的构造函数获得一些依赖项。
我设计时考虑到了依赖注入,但是那些打算在软件之上构建的开发人员可能不想使用DI。因此,我已经让而不是实现了IOC容器,所以如果需要的话,应该由开发人员来介绍一个。
我的问题是,这个软件附带了一个使用这些服务的管理网站。我不想硬编码站点中的服务依赖项,因为我想让开发人员能够在需要的情况下切换它们。
那我该怎么做?
我正在考虑引进一家服务工厂,并给它一个固定的静态位置。然后在网站上使用它。
public class ServiceFactory : IServiceFactory
{
public st