モジュール化されたアプリケーションのメソッドに、汎用のパラメータ(同じコレクション内で異なるタイプでもよい)のリスト/辞書を渡したいとします。 私のコードがそれをより良く説明できることを願っています。モジュール化されたアプリケーション汎用DTO
インタフェース:
public interface IField
{ }
public interface IField<T> : IField
{
T Value { get; }
}
実装クラス:
public class Field<T> : IField<T>
{
public Field(T value)
{
Value = value;
}
public T Value { get; set; }
}
は今、私は私のパラメータを指定して辞書を作成し、(私が得る参照されていない別のアセンブリで実装されているメソッドを呼び出すことができますそれ用いた反射): 'MyMethodは' で今すぐ
static void Main(string[] args)
{
var dicFields = new Dictionary<string, IField>();
dicFields.Add("param1", new Field<string>("Hello"));
dicFields.Add("param2", new Field<int>(15));
MyMethod(dicFields);
}
、私が取得したいです辞書内の特定のパラメータの値:
public void MyMethod(IDictionary<string, IField> parameters)
{
var param2 = parameters["param2"];
}
問題は、私が辞書の要素を定義するためにIField内のインタフェースを使用しているため「PARAM2」のないプロパティ値(一般型)を持っていることであり、我々はできる「MyMethodは」中パラメータの適切な実装を知っていません。
私の目標を達成するための提案はありますか?
完全な回答ありがとうございました。私は最終的に私がジェネリックスを使ってそれをすることができないことを知った –