Элегантный класс оболочки пользовательского членства Asp.Net MVC 3 с расширенными (настраиваемыми) методами и свойствами - PullRequest
1 голос
/ 11 мая 2011

Я пытаюсь написать пользовательский класс членства. Кажется, все работает нормально, наследуя класс Membership и предоставляя функции для всех включенных необходимых элементов (проверка пользователя, создание пользователя, удаление пользователя, одобрение и т. Д.).

Однако я сталкиваюсь с проблемой, когда пытаюсь добавить свойства или методы.

Поскольку все другие свойства и методы являются открытыми переопределенными классами в запечатанном классе, дополнительные свойства не отображаются.

Скажем, например (только пример, а не «реальный» код):

public sealed class Membership : MembershipProvider
{
    public override string ApplicationName
    {
        get
        {
            return "myApp";
        }
    }
    public string myValue { get;set;}
}

Теперь я понимаю, почему myValue не будет отображаться, когда я пытаюсь сделать Membership.myValue, а членство.ApplicationName будет.

Мой вопрос: как продлить членство, чтобы показывать пользовательские элементы? Должен ли я полностью отказаться от Membership.xxx и написать класс-оболочку? Если так, то как? Я могу найти всю документацию в мире о том, как создать собственный класс членства. У меня есть работающее пользовательское членство, которое отлично работает, если я использую только все доступные опции. У меня есть пользовательский поставщик ролей и пользовательский раздел конфигурации для хранения всего, и это лучший друг.

Чего у меня нет, так это элегантного решения.

Я бы хотел, чтобы конечным результатом было то, что я использую одну ссылку (например, Membership.xxx или myClass.xxxx) для ссылки на все элементы членства + пользовательские элементы.

Пожалуйста, предоставьте примеры того, как реализовать или ссылки на соответствующие элементы, которые будут разрешать элемент пользовательских методов.

Ответы [ 2 ]

1 голос
/ 11 мая 2011

Каждый раз, когда вы ссылаетесь на экземпляр членства, вам просто нужно привести его к типу вашего класса, вот и все.

0 голосов
/ 04 октября 2013

Вы можете взглянуть на Методы расширения , если не хотите бросать туда и обратно свои экземпляры

...