public SimpleUser GetUserByKey(Guid key)
{
return _Users.Find(delegate(SimpleUser user)
{
return (user.UserKey.CompareTo(key) == 0);
});
}
Свойство Users — простое свойство, которое позволяет действительному поставщику (XmlMembershipProvider) иметь доступ к пользователям хранилища. После того как реализация поставщика изменяет что-то внутри хранилища (например, изменит свойства пользователя), она вызывает общедоступный метод Save(), который внутри вызывает SaveStore() для сериализации информации обратно в файл, указанный в приватной переменной _FileName данного экземпляра. Остальные методы предназначены для поиска пользователей на базе различных критериев. Для этой цели обобщенный List<> включает метод Find. Метод Find принимает ссылку на другой метод, который вызывается для сравнения каждого элемента в процессе итерации по списку. Если функция сравнения возвращает для элемента true, такой элемент включается в результаты.
public SimpleUser GetUserByKey(Guid key)
{
return _Users.Find(delegate(SimpleUser user)
{
return (user.UserKey.CompareTo(key) == 0);
});
}
В этом коде передается делегат (который представляет собой ссылку на функцию), который сравнивает внутренний ключ SimpleUser с переданным ему ключом. Если сравнение дает true, текущий пользователь, переданный как параметр из Listo, возвращается в результате; в противном случае продолжается итерация по элементам Listo. Встроенная реализация метода, без явного создания метода с отдельным прототипом, называется анонимным методом, и является специальным средством С#, для экономии кода в коротких параметрах-алгоритмах.
UserStore включает реализацию для сохранения только информации пользователя. Роли не включаются. Для этой цели вы должны реализовать класс RoleStore (подобный классу UserStore), как показано ниже:
public class RoleStore
{
XmlSerializer _Serializer;
private string _FileName;
List<SimpleRole> _Roles;
#region "Singleton Implementation"
private static Dictionary<string, RoleStore> _RegisteredStores;
public static RoleStore GetStore(string fileName)
{
// Создать зарегистрированные хранилища
if (_RegisteredStores == null)
_RegisteredStores = new Dictionary<string, RoleStore> ();
// Вернуть соответствующее хранилище
if (!_RegisteredStores.ContainsKey(fileName))
{
предыдущая следующая страница вначало главы оглавление
1032