У меня есть фабрика, определенная так:
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));
}
}
В классе, который вызывает этот метод, у меня есть переменная, подобная этой:
IReportElement MyElement { get; set; }
Предполагая, что MyElement создается для типа, который реализует IReportElement. Как я могу вызвать фабрику, используя эту переменную?
Я пытался
Type VariableType = MyChartElement.GetType();
PopulatorFactory.CreatePopulator<VariableType>(new Chart());
И
PopulatorFactory.CreatePopulator<MyVariable.GetType()>(new Chart());
Я мог бы написать заявление о переключении, но я чувствую, что должен быть какой-то способ передать мой тип. Это возможно ?