Итак, у меня есть объект типа SvgElement
, который содержит значение SvgPath
(которое наследует SvgElement
). Вот код.Вставить объект в значение с другим базовым типом (унаследованным) C#
SvgElement createdElement;
//other operations. createdElement now has other data of SvgPath
if (createdElement.GetType() == typeof(SvgPath) & createdElement.ElementName == "path" && storedValue != "")
createdElement.PathData = SvgPathBuilder.Parse(storedValue);
return createdElement
(Примечание: это делается в единстве, .net 2.0 должны быть приняты во внимание, как Единство обижается на System.Linq)
Теперь SvgPathBuilder.Parse
принимает string
и возвращает объект типа SvgPathSegmentList
в PathData
. PathData
обычно является переменной в пределах SvgPath
, но я изменил SvgElement
, чтобы временно принять значение, чтобы я знал, будет ли что-то еще, что я тестировал.
Теперь, когда я предоставил вам информацию о предыстории. Как я могу написать (так, что SvgPathBuilder.Parse
будет храниться в SvgPath.PathData, а не в виде унаследованной базы данных SvgElement PathData?
(не уверен, если название подходит вопрос, пожалуйста, сообщите)
Как насчет отливки: '(createdElement as SvgPath) .PathData = SvgPathBuilder.Parse (storedValue);' – rlee
Works. Вы заслуживаете печенья. – Robokitty
Вы говорили о дженериках, и остановились на простом кастинге, тем не менее, сделали контрольную проверку Null, что является наиболее вероятной проблемой в этом случае. Если ему не назначена действительная память/инициализация, тогда будет исключение ссылки Null –