考虑到以下情况,这个问题涉及正确和可接受的编码实践。
我有以下两种方法。
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#
答案 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)
我想知道这是否是一种可以接受的模式,或者应该是 代码在第二种方法中重复?什么是最好的做法 此
这种模式可以在许多实现中看到,因此是可以接受的。
为了使您的代码更易于维护,您不应该在任何其他方法中重复它。
封装是类似案例的最佳做法。