문제

대표자를 요구하는 실제 장소는 어디입니까?이 방법이 가장 좋은 해결책 인 상황이나 패턴이 어떤 것인지 궁금합니다.코드가 필요하지 않습니다.

도움이 되었습니까?

해결책

<인용구>

대리자는 특정 종류의 메서드를 정의하는 명명 된 형식입니다.클래스 정의가 정의하는 주어진 종류의 객체에 대한 모든 멤버를 배치하는 것처럼 대리자는 정의하는 메서드 종류에 대한 메서드 서명을 배치합니다.

이 문장을 기반으로 델리게이트는 함수 포인터이며 함수의 모양을 정의합니다.

대리자의 실제 응용 프로그램에 대한 좋은 예는 Predicate .링크의 예에서 Array.Find 가검색 할 배열과 찾을 항목의 기준을 처리하기위한 술어.이 경우 Predicate 서명과 일치하는 ProductGT10 메소드를 전달합니다.

다른 팁

"Learning C # 3.0 : Master the basics of C # 3.0"에 명시된대로 <인용구>

일반적인 시나리오 : 국가 원수가 사망하면 일반적으로 미국 대통령은 장례식에 참석할 시간이 없습니다. 몸소. 대신 그는 대리인을 파견합니다. 종종이 대리인은 부통령이지만 때로는 VP를 사용할 수없고 대통령은 국무 장관이나 영부인 도요 그는 자신의 위임을 "하드 와이어"하고 싶지 않습니다. 한 사람에 대한 권한; 그는이 책임을 올바른 국제 프로토콜을 실행할 수있는 사람

대통령은 어떤 책임을 위임할지 미리 정의합니다. (장례식에 참석), 어떤 매개 변수가 전달 될지 (조의, 친절한 말), 그가 되찾고 자하는 가치 (선의). 그는 그때 위임 된 책임에 특정 사람을 할당합니다. 회장직 과정이 진행됨에 따라“실행 시간”.

시나리오 프로그래밍에서 : 특정 작업을 실행해야하는 상황에 종종 직면하지만 어떤 방법 또는 어떤 객체를 호출 할 것인지 그것을 실행합니다.

예 : 버튼은 알림이 필요한 개체를 모를 수 있습니다. 버튼을 특정에 연결하는 대신 개체, 단추를 델리게이트에 연결 한 다음 프로그램이 실행될 때 특정 메소드에 위임합니다.

일반 목록에 대한 델리게이트의 일반적인 용도 중 하나는 Action 델리게이트 (또는 이에 상응하는 익명)를 통해 foreach 작업을 한 줄로 만드는 것입니다. 라코 디스

또한 Predicate 대리자는 목록을 검색하거나 정리하는 데 매우 유용합니다. 라코 디스

코드가 필요하지 않다고 말씀하신 것을 알고 있지만 코드를 통해 유용성을 표현하는 것이 더 쉽습니다.:)

이벤트를 이벤트 핸들러에 바인딩하는 것은 일반적으로 델리게이트에 대한 첫 번째 소개입니다. 델리게이트가 EventHandler 클래스에 래핑되어 있기 때문에 사용 중인지조차 모를 수도 있습니다.

대리자 패턴이 실제 코드에서 사용되는 방식에 관심이 있다면 Mac OS X의 Cocoa보다 더 이상 보지 마십시오. Cocoa는 Mac OS X에서 프로그래밍 할 때 Apple이 선호하는 UI 툴킷이며 Objective에 코딩되어 있습니다.C. 각 UI 구성 요소가 서브 클래 싱이나 기타 수단이 아닌 위임을 통해 확장되도록 설계되었습니다.

자세한 내용은 대리인에 대한 Apple의 의견을 확인하는 것이 좋습니다. 여기 .

win32 Python을 사용하는 프로젝트가 있습니다.

다양한 이유로 일부 모듈은 odbc.py를 사용하여 DB에 액세스하고 다른 모듈은 pyodbc.py를 사용했습니다.

두 종류의 모듈에서 함수를 사용해야 할 때 문제가 발생했습니다.연결 개체가 인수로 전달되었지만 dbi.dbiDate 또는 datetime을 사용하여 시간을 나타낼 지 여부를 알아야합니다.

이는 odbc.py가 SQL 문의 값으로 날짜를 dbi.dbiDate로 예상 한 반면 pyodbc.py는 datetime 값을 예상했기 때문입니다.

한 가지 더 복잡한 점은 odbc.py와 pyodbc.py에 의해 생성 된 연결 개체가 추가 필드를 설정할 수 없다는 것입니다.

내 솔루션은 odbc.odbc (...) 및 pyodbc.pyodbc (...)에서 반환 된 연결 개체를 추가 필드의 값으로 원하는 시간 표현 함수를 포함하는 델리게이트 클래스로 래핑하는 것이 었습니다.다른 모든 필드 요청을 원래 연결 개체에 위임합니다.

저는 당신과 같은 질문을했고 대답을 위해이 사이트를 방문했습니다.

분명히이 스레드의 예제를 훑어 봤지만 더 잘 이해하지 못했습니다.

다음 내용을 읽은 후 델리게이트를위한 유용한 정보를 찾았습니다. http://www.c-sharpcorner.com/UploadFile/thiagu304/passdata05172006234318PM/passdata.aspx

Forms는 POST / GET (QueryString)을 사용하는 ASP.NET 웹 사이트보다 값을 전달하는 것이 훨씬 더 복잡하기 때문에 신규 사용자에게는 더 분명해 보일 수 있습니다.

기본적으로 "TextBox text "를 매개 변수로 사용하는 대리자를 정의합니다.

// 양식 1 라코 디스

// 요약 : 델리게이트를 정의하고, 새로운 Form2 클래스를 인스턴스화하고, funData () 함수를 델리게이트에 할당하고, textBox를 델리게이트에 전달합니다. 양식을 보여주세요.

// Form2 라코 디스

// 요약 : TextBox txtForm1을 매개 변수로 사용하고 (대리자에 정의 된대로) 레이블 텍스트를 textBox의 텍스트에 할당하면됩니다.

이것이 대표자들에게 약간의 사용을 알려주기를 바랍니다 :) ..

빠른 Google 검색이이 http://en.wikipedia.org/wiki/Delegation_pattern.기본적으로 호출을 다른 개체로 전달하는 개체를 사용할 때마다 위임합니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top