在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#中重载方法的更好方法
是的,这绝对是一种可接受的模式,因为在您的情况下,您的通用参数似乎与端点地址的类型无关。
可以在各种库和框架中看到,例如。net Framework (Console.Write
)或以下的Dapper源代码:
public static Task<IEnumerable<object>> QueryAsync(this IDbConnection cnn,
Type type, CommandDefinition command)
{
return QueryAsync<object>(cnn, type, command);
}
是。这是在同一个类中重载方法的完全正确的方法。不要在第二种方法中重复代码
我想知道这是一个可以接受的模式,还是应该代码在第二种方法中重复吗?最佳实践是什么这个。
此模式可以在许多实现中看到,因此是可接受的。
为了使你的代码更易于维护,你不应该在任何其他方法中重复它。
封装是类似情况下的最佳实践