私のアプリケーションには、入力と出力を使用して相互にリンクされているコンポーネントがあります。交換されるデータはどのタイプでもかまいませんので、ジェネリックを使用します。
public interface IInputVariable<T>
{
IOutputVariable<T> Source { get; set; }
}
public interface IOutputVariable<T>
{
T Value { get; set; }
}
別のクラスでは、コンポーネントは互いにリンクされています。リンクされているコンポーネントは、ファイルから派生しています。リンクを行うクラスは、どのタイプの入出力交換を行うかについての知識を持っていません。このクラスは、次のコードでそれらを接続するだけです。
IOutputVariable<double> output;
Type argumentType = output.GetType().GetGenericArguments()[0];
IInputVariable<argumentType> input = new BasicInputVariable<argumentType>();
input.Source = output;
このコードは、argumentTypeをジェネリック引数として使用できないため、コンパイルされません。これを定式化する正しい方法はありますか?または、引数の型を知らなくてもジェネリック変数を宣言することは可能ですか?