Asp.net 调用自定义成员资格提供程序而不强制转换成员资格。提供程序

Asp.net 调用自定义成员资格提供程序而不强制转换成员资格。提供程序,asp.net,asp.net-membership,membership-provider,sqlmembershipprovider,custom-membershipprovider,Asp.net,Asp.net Membership,Membership Provider,Sqlmembershipprovider,Custom Membershipprovider,有没有一种方法可以调用我在代码中实现的自定义成员资格提供程序,而不必每次都将成员资格类强制转换为我的自定义提供程序?例如,我将web.config设置为: <connectionStrings> <add name="TestDB" connectionString="conn_str_here" providerName="System.Data.SqlClient" /> </connectionStrings>

有没有一种方法可以调用我在代码中实现的自定义成员资格提供程序,而不必每次都将成员资格类强制转换为我的自定义提供程序?例如,我将web.config设置为:

<connectionStrings>
    <add name="TestDB"
         connectionString="conn_str_here"
         providerName="System.Data.SqlClient" />
</connectionStrings>

<membership defaultProvider="CustomSqlMembershipProvider">
    <providers>
    <clear/>
    <add name="CustomSqlMembershipProvider" type="Common.CustomSqlMembershipProvider" connectionStringName="TestDB"
         enablePasswordRetrieval="false" enablePasswordReset="true" requiresQuestionAndAnswer="false" requiresUniqueEmail="false"
         maxInvalidPasswordAttempts="5" minRequiredPasswordLength="6" minRequiredNonalphanumericCharacters="0" passwordAttemptWindow="10"
         applicationName="/" />
    </providers>
</membership>
现在要调用我的新自定义函数,是否有一些方法允许
成员身份。ChangeUsername()
而不是必须这样做:

CustomSqlMembershipProvider customMembership = Membership.Provider as CustomSqlMembershipProvider;
customMembership.ChangeUsername();

在你想使用的任何地方做演员表演,过了一段时间就开始变得烦人了。提前感谢。

您可以添加扩展方法:

namespace System.Web.Membership
{
    public static class MembershipProviderExtensions
    {
        public static void ChangeUsername(this MembershipProvider provider, string oldUsername, string newUsername)
        {
            var customProvider = provider as CustomSqlMembershipProvider;
            if (customProvider == null) throw new Exception("Invalid provider type.");

            customProvider.ChangeUsername(oldUsername, newUsername);
        }
    }
}
用法:

Membership.Provider.ChangeUsername("bob", "jane");
Membership.Provider.ChangeUsername("bob", "jane");