2012-12-20 4 views
3

그래서 현재 런타임에 개체를 생성하는 코드를 작성하고 있습니다. This Q&A과 매우 유사합니다.런타임에 소유자와 같은 형식의 필드가있는 형식을 동적으로 만듭니다.

그러나 동일한 유형의 유형을 동적으로 작성하는 것과 관련된 정보를 찾는 데 문제가 있습니다. something like :

public class Foo 
{ 
    private Foo _Parent 

    public Foo() 
    {} 

    public Foo Parent 
    { 
     get { return _Parent; } 
     set { _Parent = value; } 
    } 
} 

리플렉션 또는 방출을 사용하여 C#에서 이것을 수행 할 수있는 방법이 있습니까?

미리 감사드립니다.

답변

2

Today I learned 당신은 그것을 만들려고 종류에 핸들을 얻을 수있는 TypeBuilderType으로 캐스팅 할 수 있습니다

TypeBuilder tb = // get from a ModuleBuilder or wherever 
Type typeImAboutToBuild = (Type)tb; 

FieldBuilder fb = tb.DefineField(
    "_Parent", typeImAboutToBuild, FieldAttributes.Private) 

편집 : TypeBuilder 실제로 오히려 이것이 explicit 또는 implicit을 것보다, Type에서 상속 변환 작업; 당신도 캐스트가 필요하지 않습니다 :

TypeBuilder tb = //whatever 
FieldBuilder fb = tb.DefineField("_Parent", tb, FieldAttributes.Private) 
+0

고마워요, 정확히 내가 무엇을 찾고 있습니다. – Val

관련 문제