2013-03-15 2 views
0

을 등록 할 수 있습니까? 속성이 유효하지 않으면 이벤트로 이벤트를 확인하고 싶습니다. 클래스의 생성자에서 나는 모든 클래스가 인터페이스를 구현하도록 강제하는 IValid 인터페이스를 원합니다 (클래스를 사용하려는 경우). 따라서 내 재산의 유효성 검사는 안전하며 유효하지 않은 값을 가져 오지 않습니다. 아니면 더 좋은 기회가 있습니까?클래스에 강제로 이벤트를 등록 할 수 있습니까?

관련

답변

1

당신은 당신이 원하는 경우 생성자에서 이벤트 핸들러를 받아 들일 수 이 클래스의 사용자가 유형을 사용하기 전에 이벤트 핸들러를 제공해야한다는 점을 분명히하십시오.

0

당신은 당신의 유형을 변경할 수 있도록 건설에의 유효성을 검사 할 수 있습니다. 같은

뭔가 : 이것은 당신의 실체를 보장

public class MyClass 
{ 
    public MyClass(string aString, int anInt) 
    { 
    // Check for validity - throw exception if not valid 

     ValidString = aString; 
     ValidInt = anInt; 
    } 

    public string ValidString { get; private set; } 
    public int ValidInt { get; private set; } 
} 

은/클래스는 유효하지 않은 상태로 얻을 수 없다. 당신이 확인해야합니다 있도록

public class Foo 
{ 
    public event Action<string> Bar; 
    public Foo(Action<string> initialHandler) 
    { 
     Bar += initialHandler; 
    } 
} 

지금, 기술적으로, 누군가가 initialHandler에 대한 null에 전달할 수 있습니다, 그러나 희망이 도움이 :

0

이벤트는 구독자 수가 제로에서 위로 올 수있는 경우에 가장 적합합니다. 오브젝트의 구축으로 통지를 송신 할 필요가있는 경우, 생성자는 통지 인터페이스를 구현하는 객체를 받거나, 적절한 통지 액션을 실행하는 위양을 받아 들일 필요가 있습니다. 델리게이트를 사용하는 경우에는 이벤트 목록에 추가하지 말고 자체 필드에 저장해야합니다. null이 아닌지 확인하기 위해 인터페이스 또는 위임을 온 전성 검사하는 것이 가치가있을 수 있지만, 대부분의 경우 편집증에 대한 이유가 없습니다.

관련 문제