2009-04-01 6 views
1

많은 특성을 가진 비즈니스 오브젝트가 있다고 가정하십시오. ORM 도구를 사용하지 않고 속성을 설정하는 가장 쉽고 좋은 방법은 무엇입니까?개체에 속성을 설정하는 가장 빠른 방법은 무엇입니까?

이것은 데이터 판독기 오브젝트로부터 프로퍼티를 설정 의미 같은

client.Name = (string)reader["Name"]; 

어떤 개체가 다른 복잡한 객체를 포함하는 경우에 대한

는?

제안 사항?

답변

0

직렬화 및/또는 반사 옵션입니다.

+0

리플렉션은 열 이름이 해당하는 속성 이름과 일치하지 않는 문제를 야기합니다. – sduplooy

+0

열 이름과 속성 이름 간의 매핑을 지정하지 않으면 원하는 것을 얻을 수 없습니다. 이러한 매핑을 지정하면 사용자 지정 ORM을 작성하거나 기존 ORM을 사용할 수 있습니다. – sangupta

1

음, 리플렉션을 사용하여 지정 코드를 생성 할 수 있습니다.

0

당신은 세 가지 다른 것들에 대한 질문

  • 빠른
  • 쉬운
  • 최고의

가 동일하지 않습니다! 가장 빠른 (실행 중)은 컴파일 된 코드입니다. 즉, 속성을 올바르게 설정하기 위해 일반 C#을 작성합니다. 이것은 반사를 사용하는 것보다 쉽지만 느리다. 또한 자식 속성을 매핑하는 몇 가지 메커니즘이 필요합니다. 또한 독자와 1 : 1 일치가없는 경우 일반 속성을 매핑해야합니다. 이것은 아마도 멤버 (속성/필드)의 사용자 지정 특성을 사용하여 가장 잘 해결할 수 있습니다.

속도 (반사 이상)에 대한 타협안으로, Delegate.CreateDelegate를 사용하여 속성 설정자에게 문의 할 수 있습니다.하지만 그것은 많은 작업입니다. 아마도 또 다른 옵션은 HyperDescriptor입니다. 이것은 반사와 같은 접근을 가능하게하지만, 훨씬 더 빠릅니다.

최고? 기존 코드 (ORM 도구)를 사용하는 것 같습니다. 쓰기 및 디버그가 적습니다.

+0

글쎄, 나는 가장 빠르다고 생각한다. 그는 쓰는 것이 가장 빠르며, 실행이 가장 빠르지 않았다. – Brann

관련 문제