C# 对于我所依赖的类的接口,我应该使所有类型都通用吗?
好的,所以我正在尝试解耦我的代码。我希望在接口中使用依赖注入,而不是到处使用单例。到目前为止还不错 现在,我有一个大型网络类,它使用其他网络类作为其方法的参数或返回类型。例如:C# 对于我所依赖的类的接口,我应该使所有类型都通用吗?,c#,dependency-injection,interface,C#,Dependency Injection,Interface,好的,所以我正在尝试解耦我的代码。我希望在接口中使用依赖注入,而不是到处使用单例。到目前为止还不错 现在,我有一个大型网络类,它使用其他网络类作为其方法的参数或返回类型。例如: public class Network { void OnServerError(NetworkConnection conection, int errorCode); } public class NetworkConnection { public NetworkError lastError
public class Network
{
void OnServerError(NetworkConnection conection, int errorCode);
}
public class NetworkConnection
{
public NetworkError lastError { get; }
}
public class NetworkError
{
public string Error { get; private set; }
}
您不一定需要将
网络
作为一个接口来利用依赖注入
当我在一个项目的十字路口,当没有明确的理由从我的类中提取接口时,我想,“我是否要为测试场景编写这种类型的模拟实现?”
在某些测试中,您可能希望模拟特定的场景或行为。模拟实现在这方面非常有用
它对某些类有意义,但并非在所有情况下都有意义
希望这有帮助 您不一定需要将
网络
作为一个接口来利用依赖注入
当我在一个项目的十字路口,当没有明确的理由从我的类中提取接口时,我想,“我是否要为测试场景编写这种类型的模拟实现?”
在某些测试中,您可能希望模拟特定的场景或行为。模拟实现在这方面非常有用
它对某些类有意义,但并非在所有情况下都有意义
希望这有帮助 对于Network类,我可能想模拟它,因为我希望我的单元测试不依赖于网络连接,只测试它负责做什么。如果是这样的话,我应该接口所有的东西吗?考虑到提取接口的成本很低(特别是在使用Resharper的情况下),许多开发人员默认使用接口(几乎是这样)的情况并不少见对于网络类,我可以看到我可能想要模拟它,因为我希望我的单元测试不依赖于网络连接,只测试它负责做什么。如果是这样的话,我应该接口所有的东西吗?考虑到提取接口的成本很低(特别是使用Resharper),许多开发人员默认(几乎)接口所有的东西是很常见的。这里真正的问题是,你的
网络
类是否也要注入到其他类中。。。如果是的话,那么它可能是有用的。正如Glenn的回答所指出的:DI不需要接口,它们只是有用的。然而,真正的答案完全取决于你,取决于你的要求。你是选择构造函数还是属性注入?您使用的是什么容器?这里真正的问题是,您的网络类是否也将被注入到其他类中。。。如果是的话,那么它可能是有用的。正如Glenn的回答所指出的:DI不需要接口,它们只是有用的。然而,真正的答案完全取决于你,取决于你的要求。你是选择构造函数还是属性注入?你用的是什么容器?