我有一个Command依赖于ICommandLogger接口的抽象基类:
public abstract class Command
{
public Command(ICommandLogger cmdLogger) { /* ... */ }
}
Run Code Online (Sandbox Code Playgroud)
现在所有的继承人看起来像:
public class ConcreteCommand : Command
{
public ConcreteCommand(CommandLoggersNamespace.ICommandLogger cmdLogger)
: base(cmdLogger)
{
}
}
Run Code Online (Sandbox Code Playgroud)
我不喜欢他们被迫知道ICommandLogger(他们不使用).
怎么解决这个问题?或者完全重新设计的原因是什么?
我正在看System.Collections.Generic.KeyValuePair<TKey, TValue>结构System.Runtime, Version=4.2.1.0,这种方法引起了我的注意.
这是签名:
public void Deconstruct(out TKey key, out TValue value);
Run Code Online (Sandbox Code Playgroud)
它是否包含除简单转发Key和Value属性之外的任何逻辑?为什么有人会更喜欢它而不是财产吸气剂?
下面的例子,从这里我想执行
dotnet sln AllProjects.sln add **/*.csproj
Run Code Online (Sandbox Code Playgroud)
但是我得到这个错误:
找不到项目或目录
**/*.csproj。
看起来通配符不起作用。我究竟做错了什么?
WonderfulMicrosoft.Extensions.DependencyInjection.IServiceCollection有很多与之相关的扩展。
一个例子是Microsoft.Extensions.Logging.ConsoleLoggerExtensions和AddConsole(this ILoggingBuilder builder)哪些寄存器方法ConsoleLoggerProvider在ILoggingBuilder.Services类型的属性IServiceCollection。
因此,对于任何使用 Autofac 的人来说,这是一个合乎逻辑的问题。如何重用所有这些扩展?有没有办法将所有IServiceCollection注册转换为ContainerBuilder注册?