2011-04-24 2 views
0

내가 B 클래스를 인스턴스화하는 클래스 A를 가지고 있다고 가정 해보자. B 클래스에는 생성자와 여러 개의 초기화 메소드 (클래스 인터페이스를 통해 적용됨)가있다. 적어도 하나의 init 메소드가 B를 인스턴스화 한 후에 호출되는지 확인하기 위해 fxcop 규칙을 작성하는 방법fxcop 규칙을 작성하여 클래스가 다른 클래스의 생성자에서 init을 호출하는지 확인하는 방법은 무엇입니까?

인터넷에서 런타임시로드하면, 생성자를 사용할 수 없으므로 init.

+4

대신 디자인 오류를 수정하는 방법은 무엇입니까? 객체가 생성 될 때 사용할 준비가되어야합니다. –

+1

인터넷에서 런타임에로드하면 생성자를 사용할 수 없습니다! – user310291

+1

@ user310291 : 호기심에 따라 개체를 만들지 않고 실제로 사용할 수있는 샘플 코드를 제공 할 수 있습니까? –

답변

1

이러한 종류의 규칙은 가장 사소한 경우를 제외하고는 거의 작성할 수 없습니다. 예를 들어, B 생성자를 호출 한 직후에 B init 메소드가 호출되도록하려면 비교적 쉽게 수행 할 수 있습니다 (분기 논리로 인해 문제가 발생할 수도 있음). 그러나 사소한 사용법을 지원할 필요가 있다면 별도의 init 메소드가 필요하지 않습니다. 일반적으로 더 흥미로운 것은 init 메서드를 호출하기 전에 B 인스턴스로 다른 작업을 시도하는 경우이며, FxCop과 같은 정적 검증 자의 작업은 아닙니다.

다른 방법으로 입력 할 때 초기화되지 않은 경우 B에서 예외를 throw하는 것이 좋습니다 (폐기 된 인스턴스에서 ObjectDisposedException을 던질 수있는 것과 비슷합니까?)?