どのように私は戻り値の型にオーバーロードされている2つのプロパティを持つ.NET型を発することができますか?
-
19-09-2019 - |
質問
私は、同じ名前の2つのプロパティを持つタイプを作成し、唯一の戻り値の型に異なるする必要があります。動的反射を介して、このタイプの発光は完全に許容可能である。
このような何かます:
public TypeA Prop { get; }
public TypeB Prop { get; }
私はC#やVB.NETまたは他の.NET言語の多くからこのプロパティを消費しないことを理解してます。
私はこれを行うにはしたくない理由を私に説明答えを防ぐために、私はそれを必要とする理由私が説明しましょう:私はそれはバグを再現する必要があります。
。 //コード:具体的には、私は AutoFixtureするここで、<のhref = "HTTPのバグを持っています.google.com / P / MOQ /」のrel = 『noreferrer』>タイプの部品番号には、それが一定の場合に例外をスローするようになります。問題は、部品番号により放出された型は戻り値の型にのみ異なる「モック」という名前の両方の2つのプロパティが含まれていることである。
私はユニットテストでこのシナリオを再現したいと思いますが、私はむしろちょうどその単一の理由で部品番号の依存を取らないと思いますので、私はテストスイートの内部動作を再現したいと思います。
解決
あなたはタイプが異なるだけの同じ名前を持つ2つの性質を持つことができ、あなたは動的タイプを放出せずにそれを行うことができます:
class Foo
{
public string X
{
get { return "Hello world"; }
}
}
class Bar : Foo
{
public new int X
{
get { return 42; }
}
}
void Main()
{
foreach(PropertyInfo prop in typeof(Bar).GetProperties())
{
Console.WriteLine("{0} : {1}", prop.Name, prop.PropertyType);
}
}
このコードの出力は次のようになります。
X:可能System.Int32
X:可能System.String
所属していません StackOverflow