using PostSharp.Samples.Authorization.Framework;
using System;
 
namespace PostSharp.Samples.Authorization.BusinessObjects
{
  public class User : ISubject
  {
    public User(Guid id)
    {
      Id = id;
    }
 
    public Guid Id { get; }
 
    public string Name { get; set; }
 
 
    bool IEquatable<ISubject>.Equals(ISubject other)
    {
      return Equals(other);
    }
 
    public override bool Equals(object obj)
    {
      if (ReferenceEquals(null, obj))
      {
        return false;
      }
 
      if (ReferenceEquals(this, obj))
      {
        return true;
      }
 
      return Id.Equals(((User) obj).Id);
    }
 
    public override int GetHashCode()
    {
      return Id.GetHashCode();
    }
 
    public override string ToString()
    {
      return Name;
    }
  }
}