在 api C# 中创建重载方法的正确方法
proper way to create Overload methods in api C#
这个问题是关于在以下情况下正确和可接受的编码实践。
我有以下两种方法。
public TService GetDuplexClientChannel<T>(BindingType bindingType, EndpointAddress endPointAddress) where T : TService
{
.. Do work .. then ..
return InstanceOf(TService);
}
public TService GetDuplexClientChannel<T>(BindingType bindingType, string endPointAddress) where T : TService
{
// Call the above method and just return it.
return GetDuplexClientChannel<T>(bindingType, new EndpointAddress(endPointAddress);
}
在第一个示例中,我有方法 A 来完成工作,方法 B 只是 A 的重载,但调用 A 来完成工作。
我想知道这是否是可接受的模式,或者是否应该在第二种方法中重复代码?这方面的最佳做法是什么。
我看过这个 link 但它没有回答我关于什么是正确或不正确的问题:
Better way to overload methods in C#
是的,这绝对是一个可以接受的模式,因为在您的情况下,您的通用参数似乎与端点地址的类型无关。
它出现在各种库和框架中,例如 .NET Framework (Console.Write
) 或以下 Dapper 来源:
public static Task<IEnumerable<object>> QueryAsync(this IDbConnection cnn,
Type type, CommandDefinition command)
{
return QueryAsync<object>(cnn, type, command);
}
是的。这是在相同 class 中重载方法的完全正确的方法。不要在第二种方法中重复代码。
I would like to know if this is an acceptable pattern , or should the
code be repeated in the second method? What is the best practice for
this.
这种模式可以在许多实现中看到,因此可以接受。
为了让你的代码更易于维护,你不应该在任何其他方法中重复它。
封装是类似情况的最佳实践。
这个问题是关于在以下情况下正确和可接受的编码实践。
我有以下两种方法。
public TService GetDuplexClientChannel<T>(BindingType bindingType, EndpointAddress endPointAddress) where T : TService
{
.. Do work .. then ..
return InstanceOf(TService);
}
public TService GetDuplexClientChannel<T>(BindingType bindingType, string endPointAddress) where T : TService
{
// Call the above method and just return it.
return GetDuplexClientChannel<T>(bindingType, new EndpointAddress(endPointAddress);
}
在第一个示例中,我有方法 A 来完成工作,方法 B 只是 A 的重载,但调用 A 来完成工作。
我想知道这是否是可接受的模式,或者是否应该在第二种方法中重复代码?这方面的最佳做法是什么。
我看过这个 link 但它没有回答我关于什么是正确或不正确的问题: Better way to overload methods in C#
是的,这绝对是一个可以接受的模式,因为在您的情况下,您的通用参数似乎与端点地址的类型无关。
它出现在各种库和框架中,例如 .NET Framework (Console.Write
) 或以下 Dapper 来源:
public static Task<IEnumerable<object>> QueryAsync(this IDbConnection cnn,
Type type, CommandDefinition command)
{
return QueryAsync<object>(cnn, type, command);
}
是的。这是在相同 class 中重载方法的完全正确的方法。不要在第二种方法中重复代码。
I would like to know if this is an acceptable pattern , or should the code be repeated in the second method? What is the best practice for this.
这种模式可以在许多实现中看到,因此可以接受。
为了让你的代码更易于维护,你不应该在任何其他方法中重复它。
封装是类似情况的最佳实践。