편집 : 우리는 새로운 메서드에서 동일한 메서드를 계속 사용하려는 RoleProvider를 재정의합니다. Roles.GetRolesForUser (int)와 같은.재정의 역할 공급자 - ASP.NET
string[] myRoles3 = ((PortalRoleProvider) (Roles.Provider)).GetRolesForUser(2);
위의 코드는 약간 과장된 것 같습니다.
RoleProvider의 일부 멤버를 재정의하고 새로운 메서드를 추가하는 클래스가 있습니다. 예 :
public string[] GetRolesForUser(int UserId)
{
IEnumerable<Role> RoleList = _Repo.GetRolesForUser(UserId);
string[] RetVal = new string[] {};
foreach (var curRole in RoleList)
{
RetVal[RetVal.GetUpperBound(0)] = curRole.RoleName;
}
return RetVal;
}
지금 내가 Roles.GetRolesForUser을 쓰고 싶은 내 코드의 논리에서 오전 때 (2)하지만 난이를 입력 할 때, 내가 추가 한 추가 방법을 참조 것처럼 보인다. 다음은 클래스 선언과 webconfig입니다.
namespace PortalMVC.Providers
{
public class PortalRoleProvider : RoleProvider
{
의 Web.config
<roleManager enabled="true" defaultProvider="PortalRoleProvider">
<providers>
<clear/>
<add name="PortalRoleProvider" type="PortalMVC.Providers.PortalRoleProvider"/>
</providers>
</roleManager>
이 왜 어떤 제안?
좋습니다. 이해가 되시죠. 확장 할 수 있습니까? GetRolesForUser (int a)를 호출하려면 어떻게해야합니까? – LiamB
"문자열 [] myRoles = 새 PortalRoleProvider(). GetRolesForUser (2);" 이것은 우리가 현재 RoleProvider로만 확장하기를 원하기 때문에 약간 뒤로 보입니다. – LiamB
더 나은 아직 인터페이스를 사용하여 개체를 분리합니다. –