Другим способом является добавление нового метода в MembershipProvider (за пределами определенного интерфейса), например:
public class CustomMembershipProvider : MembershipProvider {
private LoginValidationType ValidationType;
// new method
public bool ValidateUser(string username, string password, LoginValidationType validationType = LoginValidationType.WebsiteSpecific) {
ValidationType = validationType;
return ValidateUser(username, password);
}
// the original method
public override bool ValidateUser(string username, string password) {
// do stuff with username, password and this.ValidationType
}
В своем коде вызова вы можете теперь сделать:
CustomMembershipProvider provider = new CustomMembershipProvider();
// original method
provider.ValidateUser("un", "pass");
// or call our new overload
provider.ValidateUser("un", "pass", LoginValidationType.WebsiteSpecific);
Вместо:
Membership.ValidateUser("un", "pass");
Но это все еще кажется хакерским.Простое добавление нового открытого метода не приводит к тому, что класс Membership по умолчанию показывает метод, и я не знаю, можно ли его так или иначе изменить, чтобы сделать это.
По крайней мере, вам не нужно злоупотреблять типами данныхтаким образом и есть методы для конкретных ситуаций.