私はそうのように定義された工場があります。MYELEMENTはIReportElementを実装する型にインスタンス化されると仮定すると、タイプをGeneric Factoryに動的に渡す方法は?
IReportElement MyElement { get; set; }
、どのように:私はこのような変数を持って、このメソッドを呼び出すクラスで
public IPopulator CreatePopulator<T>(ReportItem Item) where T : IReportElement
{
if (typeof(T) == typeof(BarChartElement))
{
return BarChartPopulator.Create(Item);
}
else
{
throw new NotSupportedException(string.Format("Type: {0} is not suppported by {1}", typeof(T).Name, this.GetType().Name));
}
}
をこの変数を使用して私の工場に電話することはできますか?
私は、switch文を書くことができますが、私は私のタイプに合格するためのいくつかの方法があるはずのように私は感じ
Type VariableType = MyChartElement.GetType();
PopulatorFactory.CreatePopulator<VariableType>(new Chart());
そして
PopulatorFactory.CreatePopulator<MyVariable.GetType()>(new Chart());
を試してみました。これは可能ですか?
リフレクションで可能です。あなたの場合、これはオプションですか? –
反射がオプションです。 – BentOnCoding
これは[Reflectionを使用してGeneric Methodを呼び出す方法]の複製です(http://stackoverflow.com/questions/232535/how-to-use-reflection-to-call-generic-method)。 –