如何处理重载方法签名中的冲突?

Pet*_*ter 2 c# conflict overloading method-signature

我有一种感觉,这个问题是一堆蠕虫,但无论如何我都会问... :)

我有一个方法:

private MembershipUser GetUserFromReader(SqlDataReader reader)
Run Code Online (Sandbox Code Playgroud)

我希望使用不同的返回类型重载此方法:

private User GetUserFromReader(SqlDataReader reader)
Run Code Online (Sandbox Code Playgroud)

但编译器抱怨这两种方法具有相同的签名.

那么,最好的方法是什么?我宁愿不添加不必要的参数只是为了更改方法签名.

我玩过这样的想法:

private User GetUserFromReader(T reader)
Run Code Online (Sandbox Code Playgroud)

但还没有完全探索过这个.看来我需要对我如何使用读者对象进行一系列更改.

有任何想法吗?当您有两个相同签名的重载方法时,最佳做法是什么?

谢谢你帮忙...

Luh*_*ann 6

为什么超载呢?为什么不让方法说出它的作用,如下:

private MembershipUser GetMembershipUserFromReader(SqlDataReader reader)
private User GetUserFromReader(SqlDataReader reader)
Run Code Online (Sandbox Code Playgroud)


Rob*_*vey 5

如果您确实要区分返回类型,但使用相同的方法签名,则可以使用泛型:

private T GetUserFromReader<T>(SqlDataReader reader)
Run Code Online (Sandbox Code Playgroud)

但是,重新命名这些方法要简单得多,就像Luhmann的回答一样.