CSharp · Console
using System;
using System.Collections.Generic;
using System.Linq;
public class Program
{
interface IUserPermission {}
class Permission1 : IUserPermission {}
class Permission2 : IUserPermission {}
interface IUserRole
{
bool HasPermission<T>() where T : IUserPermission;
}
class NormalUser : IUserRole
{
private static readonly List<IUserPermission> _permissions = new()
{
new Permission1()
};
public bool HasPermission<T>() where T : IUserPermission
{
return _permissions.OfType<T>().Any();
}
}
class Administrator : IUserRole
{
private static readonly List<IUserPermission> _permissions = new()
{
new Permission1(),
new Permission2()
};
public bool HasPermission<T>() where T : IUserPermission
{
return _permissions.OfType<T>().Any();
}
}
public static void Main()
{
IUserRole role = new Administrator();
var hasPermission = role.HasPermission<Permission1>();
Console.WriteLine($"Has Permission: {hasPermission}");
}
}