Ok, here's what I did.I created a new class (copied the same code basically in the Enterprise Library 3.1 Security Block) so that I could create a custom AuthorizationProvider.cs. So I did that. And I also created a new Interface much like the one that's already in that project from MS. I just created a different type of abstract method in my Interface is all and used that new method in my new class that I created.Anyway, now is time to actually test my class's method. So I created a new console app in order to allow me to test calling that method to make sure it's working. So I created a new console app in VS 2005. I then added a new class in the colsole app and added binary references to it that I thought I needed by looking at the class in the project I was working in. I also had this console class implement my Interface. Here's most of the code to give you this picture:Project A
1 using System.Security.Principal; 2 using Microsoft.Practices.EnterpriseLibrary.Security.Configuration; 3 using Microsoft.Practices.EnterpriseLibrary.Common.Configuration.ObjectBuilder; 4 using System.Collections.Generic; 5 6 namespace Microsoft.Practices.EnterpriseLibrary.Security 7 { 8 public interface IVAuthorizationProvider 9 { 10 bool Authorize(IPrincipal principal, List<string> right); 11 } 12 }
My new class in Project A:
1 2 using System.Security.Principal; 3 using Microsoft.Practices.EnterpriseLibrary.Common; 4 using Microsoft.Practices.EnterpriseLibrary.Common.Configuration; 5 using Microsoft.Practices.EnterpriseLibrary.Common.Configuration.ObjectBuilder; 6 using Microsoft.Practices.EnterpriseLibrary.Security.Configuration; 7 using Microsoft.Practices.EnterpriseLibrary.Security.Instrumentation; 8 using Microsoft.Practices.EnterpriseLibrary.Common.Instrumentation; 9 using System.Collections.Generic; 10 11 namespace Microsoft.Practices.EnterpriseLibrary.Security 12 { 13 public abstract class VAuthorizationProvider : IVAuthorizationProvider, IInstrumentationEventProvider 14 { 15 AuthorizationProviderInstrumentationProvider instrumentationProvider; 16 private IDictionary<string, List<string>> dicRights = null; 17 18 protected VAuthorizationProvider(IPrincipal principal, List<string> rightsRequested) 19 { 20 if (rightsRequested == null) throw new System.ArgumentNullException("rightsRequested list was null"); 21 22 this.instrumentationProvider = new AuthorizationProviderInstrumentationProvider(); 23 24 } 25 public bool Authorize(IPrincipal principal, List<string> rightsRequested) 26 { 27 bool result = false; 28 29 if (principal == null) throw new System.ArgumentNullException("IPrincipal is null"); 30 if (rightsRequested.Count < 1) throw new System.ArgumentNullException("rightsRequested generic string is null"); 31 32 if (rightsRequested.Count == 1) 33 { 34 dicRights[principal.Identity.Name].Contains(rightsRequested[0]); 35 } 36 37 return result; 38 } 39 40 ... rest of class 41 } 42 } 43
Console Project BMy Console class in order to try to test the Authorize method:
1 namespace TestSandBox 2 { 3 class VAuthorizationProviderTesting : VAuthorizationProvider 4 { 5 static void Main(string[] args) 6 { 7 List<string> rightToCheck = null; 8 9 rightToCheck.Add("Delete"); 10 11 VAuthorizationProvider. <-- I'm not seeing my Authorize method show in Intellisense 12 } 13 } 14 }
Problem is, Intellisense isn't showing me my Authorize method and I'm not sure why. I'm sure it's a simple syntax issue but I'm still learning about Interfaces, abstract classes, etc. I do have the includes and references in my project for ProjectA so not sure what the deal is. Even if I'm in PRoject A and go to an existing class and try it out, it also doesn't give me the method in Intellisense when trying to access the Authorize method even in Project A in other classes for my custom class I created