2009-04-12 4 views
2

어떻게하면 다른 함수로 함수를 보내어 실행할 수 있습니까? 예를 들면 ... 전달 된 메서드가있는 다른 메서드로 보낼 메서드를 지정할 수있는 필드에 특성을 갖고 싶습니다.다른 메서드로 메서드 전달하기

이것이 의미가있는 것인지 확실하지 않지만 여기에는 작은 예가 나와 있습니다.

[ValidateIf(x=>x.test())] 
public string test { get; set; } 

업데이트 :이 은 기본적으로 내가 확인을위한 DataAnnotations을 사용하고 싶지만 때로는 필드는 필수하지 않을 수 있습니다 시스템 설정에 따라 ... 당신은 내가 머리를해야 방향에 대한 제안 사항이 있습니까?

답변

3

불행히도 속성의 특성으로 대리인을 사용할 수 없습니다. 메서드 이름을 지정하고 실행시 리플렉션을 사용하여 대리자를 만들어야합니다. 컴파일 타임에 오타를 찾는 것이 이상적이지는 않습니다.

그것은 하지만 C 번호는이 일을 어떤 방법을 노출하지 않습니다 (typeof에 상응를 사용하여 MethodInfo 지정) IL 가능 수 있습니다 :(언젠가 우리가 얻을거야 infoof 운영자 ... 아주 방법 그것은 노출 될 것입니다, 확실하지 않습니다. (속성에 델리게이트 형식 정보를 유지하는 것이 좋을 것입니다.)

+0

Bassically 난 당신이 내가 머리를해야 방향에 대한 제안 사항이 마 ... 검증 DataAnnotations을 사용하고 싶지만 때로는 필드는 필수하지 될 수있는 시스템 설정에 따라? – Schotime

0

이것이 특정 목표를 달성 할 수 있을지는 모르지만 일반적으로 귀하의 언어에 데이터 주석을 추가하고자한다면 SpeC#을 보시기 바랍니다. 이것은 귀하가 귀하의 프로그램에 데이터 계약을 추가하고 찾고있는 목표를 달성 할 수있게 해주는 C# 언어의 확장입니다.

당신이 당신의 도메인 객체에 유효성 검사를 추가 할 찾고 있다면

http://research.microsoft.com/en-us/projects/specsharp/