public string Username{get; set;}
public string Password{get; set;}
public string Role{get; set;}
public Employee (string username, string password, string role ){
public interface ISharedFolder {
void PerformRWOperations ();
public class SharedFolder : ISharedFolder {
public void PerformRWOperations() {
Console.WriteLine("Read and Write ");
class SharedFolderProxy : ISharedFolder {
private ISharedFolder folder;
private Employee employee;
public SharedFolderProxy(Employee emp) {
public void PerformRWOperations()
if(employee.Role.ToUpper() == "ABC" || employee.Role.ToUpper() == "DEF") {
folder = new SharedFolder();
Console.WriteLine("ACCESS GRANTED");
folder.PerformRWOperations();
Console.WriteLine("NO ACCESS");
public static void Main(string [] args) {
Console.WriteLine("CLIENT PASSING EMPLOYEE WITH DEVELOPER TO FOLDER ACCESS");
Employee emp1 = new Employee("CHRIST", "ASER", "ABC");
SharedFolderProxy folderProxy1 = new SharedFolderProxy(emp1);
folderProxy1.PerformRWOperations();
Console.WriteLine("CLIENT PASSING EMPLOYEE WITH DEVELOPER TO FOLDER ACCESS");
Employee emp2 = new Employee("CHRISTUNIVERSITY", "123", "DEVELOPER");
SharedFolderProxy folderProxy2 = new SharedFolderProxy(emp2);
folderProxy2.PerformRWOperations();