の背後に隠されたオブジェクトのプロパティの値を取得し、私は別のさまざまなオブジェクトを運ぶことができるインタフェース型のプロパティを持つオブジェクトを持っています。C#はより良いそれを説明するためのインタフェース
public class RequestParameters {
public IRequest Request { get; set; }
}
インターフェイスがこのようなものになります言ってやるがいい。RequestParametersオブジェクトを受信すると、今
public interface IRequest {
string Username { get; set; }
string Password { get; set; }
}
を、私は要求内部オブジェクトからPERSONIDプロパティの値を取得したいプロパティ。すべてのリクエストタイプにそのプロパティがあるわけではないため、インターフェイスにはこのプロパティが含まれていてはいけません。そして、私は数十種類のうちのどれが要求オブジェクトに対応するのかわからないので、キャスティングは解決策ではありません。
このような場合、どうすればプロパティーを取得できますか?PersonId私は何らかの反射が唯一の方法だと思いますが、どのように正確にそれを行うことができますか?
すべてのタイプの「IRequest」のIDが必要かどうかを再考する必要があります。インタフェースからの目的は、機能を共通のものに整理することです。だから、あなたがこの*ものに収まらない財産を持っているときは、あなたはあなたのものを別々に定義する必要があります。ただし、 'IRequest'から派生し、idプロパティを持つインターフェースを作成することもできます。 – HimBromBeere
実際にはリフレクションを使用できますが、PersonIdプロパティ(IHasPersonInfoという名前を付けましょう)を持つリクエストタイプに対して、いくつかのインターフェースを実装する方がよいでしょう。次に、IHasPersonInfoにキャストしてプロパティを取得しようとします。 – Evk
@Evkほとんどの場合、反射は物事を完了させる最悪の解決策です。 – HimBromBeere