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

时间:2015-09-30 14:49:52

标签: c# coding-style standards overloading

考虑到以下情况,这个问题涉及正确和可接受的编码实践。

我有以下两种方法。

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

我想知道这是否是可接受的模式,还是应该在第二种方法中重复代码?这是什么最好的做法。

我看过这个链接,但它没有回答我关于什么是正确或不正确的问题: Better way to overload methods in C#

3 个答案:

答案 0 :(得分:0)

是的,这绝对是一种可接受的模式,因为在您的情况下,您的泛型参数似乎与端点地址的类型无关。

可以在各种库和框架中看到它,例如.NET Framework(Console.Write)或以下Dapper源:

public static Task<IEnumerable<object>> QueryAsync(this IDbConnection cnn, 
    Type type, CommandDefinition command)
{
    return QueryAsync<object>(cnn, type, command);
}

答案 1 :(得分:0)

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

答案 2 :(得分:0)

  

我想知道这是否是一种可以接受的模式,或者应该是   代码在第二种方法中重复?什么是最好的做法   此

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

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

封装是类似案例的最佳做法。