public virtual void ReadFromInput(ContentReader input) { Halign = input.ReadString(); Valign = input.ReadString(); Horizontal = input.ReadString(); Vertical = input.ReadString(); Width = input.ReadString(); Height = input.ReadString(); Hidden = input.ReadBoolean(); Alpha = input.ReadSingle(); AspectRatio = input.ReadString(); ID = input.ReadString(); Class = input.ReadString(); int count = input.ReadInt32(); Children = new List <WidgetPrototype>(); for (int i = 0; i < count; i++) { // Hack: content is built in a different project (Adrift.Content.Pipeline). The assembly qualified name // is different when writing than when loading. We aren't necessarily worried about what project // the class was from, we want to know how to instantiate it. // The alternative to this would be to make Adrift.Content.Common a library instead of a shared project, // however this is not ideal since we want that project to be able to be referenced by both .NET Framework // and .NET Core projects. string assemblyName = GetType().Assembly.FullName.Split(',')[0]; string className = input.ReadString().Split(',')[0]; string assemblyQualifiedName = string.Format("{0}, {1}", className, assemblyName); WidgetPrototype widget = (WidgetPrototype)Activator.CreateInstance(Type.GetType(assemblyQualifiedName)); widget.ReadFromInput(input); Children.Add(widget); } }
public void ReadFromInput(ContentReader input) { Width = input.ReadString(); Height = input.ReadString(); int count = input.ReadInt32(); Children = new List <WidgetPrototype>(); for (int i = 0; i < count; i++) { string assemblyName = GetType().Assembly.FullName.Split(',')[0]; string className = input.ReadString().Split(',')[0]; string assemblyQualifiedName = string.Format("{0}, {1}", className, assemblyName); WidgetPrototype widget = (WidgetPrototype)Activator.CreateInstance(Type.GetType(assemblyQualifiedName)); widget.ReadFromInput(input); Children.Add(widget); } }