Мне нужна помощь здесь, чтобы сделать динамическое создание экземпляра на C#. То, что я хочу выполнить, - это возможность использовать строковую переменную, которая используется как имя в экземпляре. Я думаю, вы можете использовать отражение или что-то в этом роде, но я потерял его. Вот мой фрагмент кода и, надеюсь, у кого-то есть ответ.C# Динамическое инстанцирование
Средние значения привязаны к классу, который обрабатывает все. Поэтому давайте скажем, что я хотел сделать тест переменной, и все, что связано с строкой теста, можно передать как экземпляр. Как я могу создать объект, который может обрабатывать ввод переменных, компилироваться и использоваться во время выполнения? Я знаю, что это может звучать необычно, но вместо меня я использую много IF с несколькими объявлениями о двухместных. Я мог бы использовать динамическое создание экземпляра. Любой, кто может помочь, я буду очень благодарен.
Averages test = new Averages();
double[] testresult;
testresult = test.sma();
womp ,,, Я хочу динамически объявлять массивы двойников. Я уже знаю, как объявить статический массив. То, что я пытаюсь выполнить, - это исключить объявление 30 массивов, которые в основном делают одно и то же снова и снова с другим наименованием.
Так вместо того, чтобы сделать это:
if (UITAName == "SMA")
{
Averages sma = new Averages();
double[] smaresult;
smaresult = sma.sma(UITAName, YVal, UITPeriod, UITShift);
chart1.Series[UITA].Points.DataBindXY(test2, test1);
}
if (UITAName == "TMA")
{
Averages tma = new Averages();
double[] tmaresult;
tmaresult = tma.tma(UITAName, YVal, UITPeriod);
chart1.Series[UITA].Points.DataBindXY(XVal, tmaresult);
}
else
if (UITAName == "EMA")
{
Averages ema = new Averages();
double[] emaresult;
emaresult = ema.ema(UITAName, YVal, UITPeriod);
chart1.Series[UITA].Points.DataBindXY(XVal, emaresult);
}
Я хочу сделать это только один раз за все, а не делать IF заявления. Проблема в том, что вы не можете скомпилировать с объявлением строки. Должен быть способ, которым я просто не знаю, как это сделать.
Средние значения UITAName = новые средние значения(); double [] UITANameresult; UITANameresult = UITAName.UITAName (UITAName, YVal, UITPeriod); chart1.Series [UITA] .Points.DataBindXY (XVal, UITANameresult);
Ваш вопрос непонятен. Вы спрашиваете, как создать экземпляр класса с именем типа? Что вы имеете в виду «много IF с несколькими объявлениями удвоений»? – bobbymcr
Я думаю, что я, возможно, смог собрать воедино вопрос OP ... ??? – IAbstract
Звучит как шаблон фабричного метода (http://en.wikipedia.org/wiki/Factory_method_pattern) –