Добавление расширения для класса-сущности
This commit is contained in:
parent
7eb2259885
commit
1628457ece
@ -0,0 +1,58 @@
|
||||
using ProjectAircraftCarrier_.Drawnings;
|
||||
using ProjectAircraftCarrier_.Entities;
|
||||
|
||||
namespace ProjectAircraftwarshiprier_.Drawnings;
|
||||
|
||||
/// <summary>
|
||||
/// Расширение для класса EntityWarship
|
||||
/// </summary>
|
||||
public static class ExtentionDrawningWarship
|
||||
{
|
||||
/// <summary>
|
||||
/// Разделитель для записи информации по объекту в файл
|
||||
/// </summary>
|
||||
private static readonly string _separatorForObject = ":";
|
||||
|
||||
/// <summary>
|
||||
/// Создание объекта из строки
|
||||
/// </summary>
|
||||
/// <param name="info">Строка с данными для создания объекта</param>
|
||||
/// <returns>Объект</returns>
|
||||
public static DrawningWarship? CreateDrawningWarship(this string info)
|
||||
{
|
||||
string[] strs = info.Split(_separatorForObject);
|
||||
EntityWarship? warship = EntityAircraftCarrier.CreateEntityAircraftCarrier(strs);
|
||||
if (warship != null)
|
||||
{
|
||||
return new DrawningAircraftCarrier(warship.Speed, warship.Weight, warship.BodyColor,
|
||||
(warship as EntityAircraftCarrier).AdditionalColor, (warship as EntityAircraftCarrier).DeckForAircraftTakeOff,
|
||||
(warship as EntityAircraftCarrier).ControlCabin, (warship as EntityAircraftCarrier).FighterJet);
|
||||
}
|
||||
|
||||
warship = EntityWarship.CreateEntityWarship(strs);
|
||||
if (warship != null)
|
||||
{
|
||||
return new DrawningWarship(warship.Speed, warship.Weight, warship.BodyColor);
|
||||
}
|
||||
|
||||
return null;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Получение данных для сохранения в файл
|
||||
/// </summary>
|
||||
/// <param name="drawningWarship">Сохраняемый объект</param>
|
||||
/// <returns>Строка с данными по объекту</returns>
|
||||
public static string GetDataForSave(this DrawningWarship drawningWarship)
|
||||
{
|
||||
string[]? array = drawningWarship?.EntityWarship?.GetStringRepresentation();
|
||||
|
||||
if (array == null)
|
||||
{
|
||||
return string.Empty;
|
||||
}
|
||||
|
||||
return string.Join(_separatorForObject, array);
|
||||
}
|
||||
|
||||
}
|
@ -51,4 +51,35 @@ public class EntityAircraftCarrier : EntityWarship
|
||||
{
|
||||
AdditionalColor = newColor;
|
||||
}
|
||||
|
||||
public override string[] GetStringRepresentation()
|
||||
{
|
||||
return new[]
|
||||
{
|
||||
nameof(EntityAircraftCarrier),
|
||||
Speed.ToString(),
|
||||
Weight.ToString(),
|
||||
BodyColor.Name,
|
||||
AdditionalColor.Name,
|
||||
DeckForAircraftTakeOff.ToString(),
|
||||
ControlCabin.ToString(),
|
||||
FighterJet.ToString()
|
||||
};
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Создание объекта из массива строк
|
||||
/// </summary>
|
||||
/// <param name="strs"></param>
|
||||
/// <returns></returns>
|
||||
public static EntityAircraftCarrier? CreateEntityAircraftCarrier(string[] strs)
|
||||
{
|
||||
if (strs.Length != 8 || strs[0] != nameof(EntityAircraftCarrier))
|
||||
{
|
||||
return null;
|
||||
}
|
||||
|
||||
return new EntityAircraftCarrier(Convert.ToInt32(strs[1]), Convert.ToDouble(strs[2]), Color.FromName(strs[3]),
|
||||
Color.FromName(strs[4]), Convert.ToBoolean(strs[5]), Convert.ToBoolean(strs[6]), Convert.ToBoolean(strs[7]));
|
||||
}
|
||||
}
|
@ -46,4 +46,28 @@ public class EntityWarship
|
||||
{
|
||||
BodyColor = newColor;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Получение строк со значениями свойств объекта класса-сущности
|
||||
/// </summary>
|
||||
/// <returns></returns>
|
||||
public virtual string[] GetStringRepresentation()
|
||||
{
|
||||
return new[] { nameof(EntityWarship), Speed.ToString(), Weight.ToString(), BodyColor.Name };
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Создание объекта из массива строк
|
||||
/// </summary>
|
||||
/// <param name="strs"></param>
|
||||
/// <returns></returns>
|
||||
public static EntityWarship? CreateEntityWarship(string[] strs)
|
||||
{
|
||||
if (strs.Length != 4 || strs[0] != nameof(EntityWarship))
|
||||
{
|
||||
return null;
|
||||
}
|
||||
|
||||
return new EntityWarship(Convert.ToInt32(strs[1]), Convert.ToDouble(strs[2]), Color.FromName(strs[3]));
|
||||
}
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user