在api c#中创建重载方法的正确方法

本文关键字:方法 重载 创建 api | 更新日期: 2023-09-27 18:15:14

这个问题是关于在下列情况下适当和可接受的编码实践的。

我有以下2种方法。

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来完成工作。

我想知道这是一个可接受的模式,还是应该在第二种方法中重复代码?这方面的最佳实践是什么?

我看过这个链接,但它并没有回答我的问题,什么是正确的或不正确的:c#中重载方法的更好方法

在api 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);
}

是。这是在同一个类中重载方法的完全正确的方法。不要在第二种方法中重复代码

我想知道这是一个可以接受的模式,还是应该代码在第二种方法中重复吗?最佳实践是什么这个。

此模式可以在许多实现中看到,因此是可接受的。

为了使你的代码更易于维护,你不应该在任何其他方法中重复它。

封装是类似情况下的最佳实践