2011-07-05 6 views
4

클래스 개체를 동적으로 만들어야합니다. 동적 키워드를 사용하여이 시도했습니다.클래스를 동적으로 만드는 방법

dynamic dataTransferObject = new dtoClass(); 
       dataTransferObject.Property1= "someValue"; 
       dataTransferObject.Property2= "someOtherValue"; 

       LogicLayer.Update(dataTransferObject); 

논리층 내부에서 추가 동작을 수행하도록 객체를 해석합니다. 컴파일러는 내 구문이 마음에 들지 않습니다. 조언하십시오.

+0

dtoClass는 컴파일시 또는 런타임에만 존재합니까? –

+0

이 개체는 런타임에만 존재합니다. – AnxiousdeV

답변

7

ExpandoObject를 사용하여이를 수행하십시오.

dynamic dataTransferObject = new System.Dynamic.ExpandoObject(); 
dataTransferObject.Property1 = "someValue"; 
dataTransferObject.Property2 = "someOtherValue"; 
+0

지금 이걸보고 있는데, 내가 뭘하고있는 것 같아. – AnxiousdeV

+0

빙고, 모두들 감사합니다! – AnxiousdeV

1

나는 이것이 당신이 찾고있는 것이라고 생각합니다! - "Expandos 및 동적"라는 섹션

http://www.hanselman.com/blog/NuGetPackageOfTheWeek6DynamicMalleableEnjoyableExpandoObjectsWithClay.aspx

가서 당신이 다음을 수행 할 수 있습니다 :

var person = New.Person(); 
person.FirstName = "Louis"; 
person.LastName = "Dejardin"; 

스투

+0

이것은 훌륭한 정보입니다, ClayFactory를 사용하여 나 자신을 예견 할 수 있습니다. 아주 멋졌습니다! – AnxiousdeV

+0

예 - 이것은 Expando 항목을 기반으로 작성되었지만 훨씬 더 명확한 구문을 제공합니다. 주위를 어지럽히는 것도 할 일 목록에 있습니다. – Stu

-1

익명 형식을 사용하려고합니다. 다음 코드를 확인하십시오

var v = new { Property1 = "someValue", Property2 = "someOtherValue" }; 

익명 형식은 명시 적으로 먼저 유형을 정의 할 필요없이 하나의 객체로 읽기 전용 속성의 집합을 캡슐화하는 편리한 방법을 제공합니다.

+0

문제는이 개체가 다른 논리 계층으로 전달된다는 것이며, 올바르게 해석되는지 확신 할 수 없습니까? – AnxiousdeV

+0

아마도이 문제의 인터페이스를 사용하는 것이 더 좋을 것입니다. –

+1

그러나 익명 형식은 내부이며 어셈블리 경계를 전달할 수 없습니다. – jbtule

관련 문제