2012-10-21 5 views
2

자신의 앰비언트 클래스를 정의 할 수 있습니까?앰비언트 클래스를 작성하는 방법

예를 들어, TransactionScope 클래스는 다른 개체에 대한 참조를 명시 적으로 전달하는 코드없이 IEnlistmentNotification을 구현하는 모든 개체에서 사용할 수 있습니다 (필자 생각).

이 코드를 사용해야 할 지 모르겠지만 작동 방식을 이해하는 것은 흥미로울 것입니다 (예 : 내 코드에서 이러한 기능을 구현할 수있는 방법). 이것은 우리가 자체 클래스로 만들 수있는 것입니까, 아니면 "일반 개발자"수준에서 사용할 수있는 것 이상으로 TransactionScope가 할 수 있도록 저수준으로 개발 된 것입니까?

답변

2

쓰기 new TransactionScope()은 정적 인 Transaction.Current property 만 설정합니다.

다른 클래스는이 속성이 null이 아니고 트랜잭션에 참여할 수 있는지 여부를 확인할 수 있습니다.

마법이 없습니다.

+0

아, 어떤 이유인지 나는 생각하지 않았습니다. 나는이 부분에 참여할 수있는 도서관이 너무 다르므로 정보를 공유 할 수있는 방법이 없다고 생각했기 때문에 추측합니다. @Slaks에게 감사합니다. 나는 마술의 부족에 의해 다소 실망했다. – JohnLBevan

+0

@JohnLBevan : IMHO, 도서관의 마술은 악합니다. 문자열, 배열 및 반사와 같은 핵심 구조를 제외하고 .Net 클래스 라이브러리의 모든 내용을 복제 할 수 있습니다. 어디에서나 (거의) 마술이 없습니다. – SLaks

+0

True - 예기치 않은 동작이 발생하는 경향이 있습니다. 마술은 일관성의 규칙에 어긋납니다. – JohnLBevan

관련 문제