嗨我正在开发一个通用解决方案,我在此扩展System.Security.Principal.IIdentity
以添加更多用户信息。这部分将在不同的解决方案再次使用的用户信息将来自像DB或Active Directory,甚至XML文件不同的来源。我必须做出一些解决方案,其中一个IIdentityInitializer
将初始化IIdentity
,我都会有不同的类实现这些接口。如何在其他类中初始化泛型类型
public interface IIdentityInitializer<T>
where T:IIdentity
{
T Initialize(string userid, string password)
}
public ActiveDirectoryIdentityInitializer<T> :IIdentityInitializer<T>
where T:IIdentity
{
public T Initialize(string username, string password)
{
//Load Logic and assign data from Active directory to different property of T
}
}
public DBIdentityInitializer<T>:IIdentityInitializer<T>
where T:IIdentity
{
public T Initialize(string username, string password)
{
//Load Logic and assign data from DB to different property of T
}
}
public CustomIdentity1:IIdentity
{
public string Name{get;set}
public string EMail{get;set;}
public CustomIdentity1(IIdentityInitializer<CustomIdentity1> ci){}
}
public CustomIdentity2:IIdentity
{
public string Name{get;set}
public string EMail{get;set;}
public string Mobile{get;set;}
public string EmployeeId{get;set;}
public CustomIdentity2(IIdentityInitializer<CustomIdentity2> ci){}
}
现在我有ActiveDirectoryInitializer
和与CustomIdentity1
和CustomIdentity2
我必须知道在初始化逻辑可以在一个通用的方法事业工作,未来我们可以有更多类型的IIdentity
和IIdentityInitializer
。