2009-07-23 3 views
0

에 객체 유형을 할당합니다. 객체 o 및 유형 T가 있습니다. 객체 o를 인스턴스화하지 않고 런타임에 유형 T로 변경하려면 리플렉션을 사용하고 싶습니다. '런타임에 vb.net 또는 C#

Dim p as New Point() 

하지만 난 돈 : 나는에 해당하는 런타임에 인스턴스를 생성 Activator.CreateInstance로를 사용하는 방법을 알고

Dim p as Point = Nothing 

:

컴파일시에 등가가 될 것이다 이것을하고 싶지 않습니다. 유형의 생성자 매개 변수에 대한 지식이 없으며 일부 유형에는 매개 변수없는 생성자가 없습니다. 예. 세례반.

그래서, 요약하면, 내가 동등한 수행하는 방법 싶습니다 : 나는 PropertyGrid가 사용하고 있기 때문에이 일을 해요 왜 당신이 궁금해하는 경우

Dim o as T = Nothing 

을, 그건 유형을 편집 할 수있는 양식. Font를 처음 편집하는 경우, 초기화되지 않은 Font를 PropertyGrid에 전달하면 그리드가 기본값으로 표시됩니다.

건배.

ETA :

내가 시도 'O = GetUninitializedObject (T)',하지만 PropertyGrid가 중 아무것도 설정 정의 유형과 제대로 초기화 객체 또는 객체를 원한다.

는 사실은 여기 내 특정 문제를 해결했습니다

how-to-use-the-property-grid-in-a-form-to-edit-any-type

,하지만 난 여전히 (래퍼 클래스를 사용하지 않고 런타임에 유형을 지정하는 방법을 알고 싶네 나는 그것을 사용하기에 충분히 운이 좋았다).

답변

2

가장 가까운 것은 기본값 (T)으로 설정하는 것입니다. 기본값이 Nothing (null)이 아니라고 가정하면 Rectangle.Empty 또는 0 (int)과 같은 기본값이 생깁니다.

Nothing (null)과 관련된 유형이 없으므로 o를 객체로 사용하는 경우 (T) 아무 것도 도움이되지 않습니다.

+0

Dim o as Font = Nothing, 글꼴 유형이 연관되어 있습니다. 인스턴스화 될 때까지는 사용할 수 없지만 오류없이 PropertyGrid로 전달할 수 있습니다. o를 기본값 (T)으로 설정하는 것이 무슨 뜻인지 설명해 주시겠습니까? 감사. – Jules

+0

내가 볼 수 있듯이 개체를 기본값 (T)으로 설정하는 것은 VB.Net에서 Nothing으로 설정하는 것과 같습니다. – Jules

+1

"Dim o as Font = Nothing"으로, 변수 o는 Font 유형입니다. 아무것도 아닌 부분은 "글꼴 없음"이 아니며 "객체 없음"입니다. 기본적으로, 당신은 하나 또는 다른 하나를해야만합니다. 변수가 타입을 가지고 있거나 (객체가 작동하지 않습니다) 또는 변수 내부의 값이 타입을가집니다 (아무것도 작동하지 않습니다). "대상"에 "아무것도"가 없다면 그것이 의미하는 바를 알 수있는 방법이 없습니다. 래퍼를 사용하는 것이 가장 좋은 방법 일 것입니다. –