using System; namespace ln.identities { public class AssignedRole { IIdentityProvider identityProvider; public IIdentityProvider IdentityProvider => identityProvider; readonly Guid identityUniqueID; public Identity Identity => IdentityProvider.GetIdentity(identityUniqueID); public Role Role { get; set; } protected AssignedRole(IIdentityProvider identityProvider) { this.identityProvider = identityProvider; } public AssignedRole(IIdentityProvider identityProvider, Identity identity) : this(identityProvider, identity, 0) { } public AssignedRole(IIdentityProvider identityProvider,Identity identity,Role role) :this(identityProvider) { identityUniqueID = identity.UniqueID; Role = role; } public override string ToString() => String.Format("[AssignedRole Identity={0} Role={1}]",Identity.IdentityName,Role); public override int GetHashCode() => identityUniqueID.GetHashCode(); public override bool Equals(object obj) => (obj is AssignedRole you) && (identityUniqueID.Equals(you.identityUniqueID)); } }