Provider Patterns.
1. Provider pattern.
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace ProviderPattern
{
interface IExternalAuth_Provider
{
Groups AddGroup();
Users AddUser();
}
}
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace ProviderPattern.ExternalAuthDev
{
public class ExternalAuthDev_Provider : IExternalAuth_Provider
{
public Groups AddGroup()
{
Groups obj = new Groups { Id =1,Name = "gr1 coming from database ...." };
Console.WriteLine("Id " + obj.Id + " Name" + obj.Name);
return obj;
}
public Users AddUser()
{
return new Users { Id = 1, Name = "user1 coming from database ...." };
}
}
}
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace ProviderPattern.ExternalAuthDev
{
public class ExternalAuth_Production: IExternalAuth_Provider
{
public Groups AddGroup()
{
return new Groups { Id = 1, Name = "gr1 coming from Ad Groups...." };
}
public Users AddUser()
{
return new Users { Id = 1, Name = "user1 coming from Ad Groups...." };
}
}
}
using System;
using System.Collections.Generic;
using System.Configuration;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace ProviderPattern
{
public class AzureAdFactory
{
private static IExternalAuth_Provider DataProvider = null;
protected AzureAdFactory()
{
}
public static T InitProvider<T>()
{
string ProviderName;
if (DataProvider == null)
{
// Get provider type to create
ProviderName = "ProviderPattern.ExternalAuthDev." + ConfigurationManager.AppSettings["ProviderName"];
// ProviderName = ConfigClass.ProviderName
// Create new DataProvider
DataProvider = (IExternalAuth_Provider)Activator.CreateInstance(Type.GetType(ProviderName));
}
return (T)DataProvider;
}
}
}
<appSettings>
<!--<add key="ProviderFactory" value="AzureAdFactory"/>-->
<add key="ProviderName" value="ExternalAuthDev_Provider"/>
</appSettings>
<connectionStrings>
<add name="ExternalAuthDev_Provider" connectionString="ProviderPattern.ExternalAuthDev.ExternalAuthDev_Provider"/>
</connectionStrings>
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace ProviderPattern
{
class Program
{
static void Main(string[] args)
{
var obj = AzureAdFactory.InitProvider<IExternalAuth_Provider>();
Console.WriteLine(obj.AddGroup());
}
}
}
No comments:
Post a Comment