2017-12-18 5 views
0

ASP.NET Boilerplate 및 Module Zero를 사용하여 이벤트 관리 응용 프로그램을 개발 중입니다.ABP 기능 관리 - 새 범위를 추가하는 방법?

ASP.NET 보일러 플레이트에 포함 된 기능 관리를 사용하여 버전 또는 임차인에게 기능 범위를 지정할 수 있습니다.

이벤트 대상 범위를 확장 할 수 있는지 알고 싶습니다. 따라서 입주자가 만드는 각 이벤트에 개별적으로 응용 프로그램의 특정 기능을 할당 할 수 있습니다.

이것이 가능합니까? ABP로이를 구현하는 가장 좋은 방법은 무엇입니까?

답변

2

범위를 확장 할 수 있는지 알고 싶습니다 ... 가능한가요?

확실히. 당신은 할 수 있습니다

  • 서브 클래스 Feature
  • 서브 클래스 FeatureSetting
  • Events
  • IFeatureChecker
  • 구현하고 FeatureValueStore에서 IFeatureManager
  • 재정의 방법을 대체 구현하고 대체 포함하는 새로운 FeatureScopes 열거를 생성

많은 작업처럼 보입니다. 그러나 그것은 유지 가능성과 관심사의 분리를 위해 그렇게 행해진 다.

ABP로 이것을 구현하는 가장 좋은 방법은 무엇입니까?

당신은 세입자를 사용할 수있는 그대로 Feature를 사용하는 것이 더 낫다, 다음 FeatureChecker 교체 :

public async Task<string> GetValueAsync(int tenantId, string name) 
{ 
    var feature = _featureManager.Get(name); 

    var value = await FeatureValueStore.GetValueOrNullAsync(tenantId, feature); 
    if (value == null) 
    { 
     return feature.DefaultValue; 
    } 

    // Check if Feature is enabled for Event 
    // ... 

    return value; 
} 
+0

이 좋아, 그래서 가장 간단한 해결책은 엔티티라고'EventFeature'를 만드는 것입니다 어디 이벤트와 피처 사이의 매핑을 저장하고 'FeatureChecker'를 대체하여 이벤트 내부에서 이러한 피쳐를 조회 할 수 있습니다. Im은 'AbpSession'이 주입되는 것과 같은 방법으로 이벤트 세션을 FeatureChecker에 삽입하는 방법을 평가하려고합니다. –

+0

맞습니다. – aaron

+0

안녕하세요 Aaron, 내 자신의 FeatureChecker를 구현했지만 기본 FeatureChecker 대신 Abp에서 사용하는 데 문제가 있습니다. 내 FeatureChecker에 ITransientDependency를 추가했지만 여전히 기본 Abp를 선택합니다. 그 등록을 올바르게하는 방법에 대한 아이디어? –