You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
SAE-2.01/MCTG/MCTGLib/BaseItem.cs

95 lines
2.2 KiB

using System;
using System.ComponentModel;
using System.Diagnostics.CodeAnalysis;
namespace Model
{
/// <summary>
/// Define the base structure of any Items.<br/>
/// An Item can be identifed and have a short description. It can also be displayed.
/// </summary>
public abstract class BaseItem : IDisplayable, IEquatable<BaseItem>
{
#region Private Attributes
/// <summary>
/// The identifier of an Item.<br/>
/// The first number correspond to the typs of the Item.
/// </summary>
virtual public uint Id
{
get => _id;
init => _id = value;
}
protected uint _id;
#endregion
#region Public Properties
/// <summary>
/// A short description of the Item. Useful to know what this Item stand for.
/// </summary>
public string Description { get; set; }
#endregion
#region Constructors
protected BaseItem(uint id, string description="Any Item.")
{
Id = id; Description = description;
}
#endregion
#region Public Methods
public override string ToString()
{
return
$"[ Class -BaseItem- ]\n\n" +
$"\t.Id - {Id}\n" +
$"\t.Description - {Description}\n" +
$"______\n\n";
}
#region IDisplayable Implementation
public void DisplayId()
{
Console.WriteLine($".Id - {Id}");
}
public void DisplayDescription()
{
Console.WriteLine($".Description - {Description}");
}
public void DisplayItem()
{
Console.WriteLine(this.ToString());
}
#endregion
#region IEquatable<BaseItem> implementation
public int GetHashCode([DisallowNull] BaseItem obj)
{
return obj.Id.GetHashCode() + obj.Description.GetHashCode();
}
public bool Equals(BaseItem? other)
{
if (other == null) return false;
return (this.Id == other.Id) && (this.Description == other.Description);
}
#endregion
#endregion
}
}