2016-06-20 4 views
1

LUIS entities bound to the state 인 FormDialog가 있습니다. AbstractFormDialog의 서브 클래스에서 Microsoft Bot Framework FormFlow - [Optional] 특성을 재정의 하시겠습니까?

public abstract class AbstractFormDialog 
{ 
    [Optional] 
    public string Entity1; 

    [Optional] 
    public string Entity2; 

    [Optional] 
    public string Entity3; 

    [Optional] 
    public string Entity4; 

    [Optional] 
    public string Entity5; 
} 

, 나는 그래서 "더 선호"옵션을 선택하지 않습니다, 이들 기관 중 일부는 필요하다고 말할 수 있어야합니다. 이 가능한 경우

public abstract class FormDialog1 : AbstractFormDialog 
{ 
    [Required] 
    public string Entity1; 

    [Required] 
    public string Entity2; 
} 

같은 뭔가 아는 사람 있나요? 물론 기본 클래스에서 필요한 모든 속성을 만들 수 있으며 확장 한 모든 클래스에서 실제로 어떤 선택 항목이 선택 사항인지 나열 할 수 있습니다. 새로운 엔티티가 추가 될 경우 모든 서브 클래스를 업데이트해야하기 때문에이 디자인은 좋지 않습니다.

+0

리플렉션에서 속성을 읽는 방법에 따라 다릅니다. 실제 'AbstractFormDialog' 유형을 사용하여 데이터를 읽는다면, 당신이 할 수있는 일은 거의 없을 것입니다. 인스턴스를 기반으로 특성을 가져 오면 대신 필드 속성을 만들어 무시할 수 있습니다. 그 외에도 속성을 검사하는 모든 항목이 'TypeDescriptor'를 검사하는지 여부를 확인할 수 있습니다. http://stackoverflow.com/questions/12143650/how-to-add-property-level-attribute-to-the-typedescriptor-at- 실행 시간 – TyCobb

답변

1

당신은 또한 당신이, 즉 새로운 FormBuilder을 양식을 빌드 할 때 런타임에 필드 API를 사용하여이를 제어 할 수 있습니다() .Field (새 FieldReflector (nameof (FormDialog1.Entity1)) .SetOptional) (false)를 .짓다(); 이렇게하면이 인스턴스의 Entity1 필드가 "필수"가됩니다.