静的クラスで定義された次の 2 つのオーバーロードされた静的メソッドがあります。
private static Dictionary<int, PartitionDefinition> GetNewPartitionDefinitions (string measureGroup, int rangeThreshold)
{
do something;
}
private static Dictionary<int, PartitionDefinition> GetNewPartitionDefinitions(DateRange startDateRange)
{
do something else;
}
私が得ている動作は、コードの最初にリストされているメソッドが、設計時に認識されるものです。チェーン内の後続のメソッド名がグレー表示され、その上にカーソルを置くと、「メソッドは使用されていません」というメッセージが表示されます。
メソッドを呼び出そうとすると、インテリセンスはコードに最初に現れるものだけを検出し、他のものは存在しないことにも注意してください。
問題を調査すると、Type Erasure の状態を問題として排除できると「信じています」が、これについて 100% 絶対に確信があるわけではありません。
次のコードが Generics を使用した Type Erasure に有効であることは知っています。
public class A {
public static MethodOne (List<String> param) {}
public static MethodOne (Dictionary<String,String> param) {}
}
しかし、この場合、ジェネリックがパラメーターとして渡されているため、これがどのように問題を引き起こすかがわかります。私の例では、戻り値の型のみが同一のジェネリック型ですが、同じメソッド名を持ち、明らかに異なる非ジェネリックパラメーターの型と数を持つとうまくいくはずです。
誰かがこれについて少し光を当てることができますか? ここに同様の記事の投稿を見てきましたが、私が見ている問題を正確に説明しているようには見えません。
私はプログラミングは初めてではありませんが、すべてを知っているとは言いません。これは私にとって初めてのことです。