내가 현재에서 실행하고있는 클래스의 유형 다음 내가 해봤알려진 값 유형으로 사전을 만드는 방법은 무엇입니까?
:.
Dim col as new Dictionary(Of Integer, Me.GetType())
하지만 `키워드가 유형을 지정하지 않는다는 오류가 나타납니다.
실행중인 클래스의 유형에 따라 사전을 어떻게 만듭니 까?
내가 현재에서 실행하고있는 클래스의 유형 다음 내가 해봤알려진 값 유형으로 사전을 만드는 방법은 무엇입니까?
:.
Dim col as new Dictionary(Of Integer, Me.GetType())
하지만 `키워드가 유형을 지정하지 않는다는 오류가 나타납니다.
실행중인 클래스의 유형에 따라 사전을 어떻게 만듭니 까?
C# 형식으로 생성되는 int
의 사전입니다. 사용
방법 :
문제는 다소 입력 안전한 방식으로 형태를 생성 주로 표현한다. Dictionary
경우에는 IDictionary
에 의지하거나 객체를 조작하기 위해 리플렉션을 계속 사용할 수 있습니다.
또한 어떻게 든 더 많은 반사에 의해 호출 일반적인 코드로 대부분의 조작을 표현하는 것이 가능하다 MakeGenericMethod
샘플 :
var myType = typeof(Guid); // some type
// get type of future dictionary
Type generic = typeof(Dictionary<,>);
Type[] typeArgs = { typeof(int), myType };
var concrete = generic.MakeGenericType(typeArgs);
// get and call constructor
var constructor = concrete.GetConstructor(new Type[0]);
var dictionary = (IDictionary)constructor.Invoke(new object[0]);
// use non-generic version of interface to add items
dictionary.Add(5, new Guid());
Console.Write(dictionary[5]);
// trying to add item of wrong type will obviously fail
// dictionary.Add(6, "test");
무엇을할까요? 이 줄이야? 'var constructor = concrete.GetConstructor (new Type [0]);'어떤 타입 [0] ??? – AngryHacker
@AngryHacker'GetConstructor'에는 생성자의 각 인수 유형을 지정하는 (일치하는 항목을 찾기 위해) 배열'Type' 객체가 필요합니다. 'new Type [0]'은 0 요소의 배열입니다. - 0 매개 변수로 생성자를 찾고 있습니다. 다른 생성자가 필요한 경우이를 조정해야 할 수도 있습니다. –
단지에 클래스 이름 Dim col as new Dictionary(Of Integer, MyClass)
를 사용 정수형을 키로 사용하지 않는 쪽은 사전에 정수를 인덱스로 사용하기 때문에 혼동을 줄 수 있습니다. 키가 연속 정수가되는 경우 목록에서 더 잘 서비스 할 수 있습니다.
[MakeGenericType] (http://msdn.microsoft.com/en-us/library/system.type.makegenerictype.aspx)? –
@AlexeiLevenkov 그러면 항목을 사전에 어떻게 추가합니까? 실제로 유형이 아닌 사전을 구성하지 않습니다. – AngryHacker
당신은 (VB.Net에서 그것을 표현하는 방법을 모르겠지만, 나는 C# 샘플을 줄 수있다.) 그러나 좀 더 합리적인 해결책을 제안 할 수 있기를 바랍니다. C#에서는 코드에서 결과 유형을 표현하는 데 문제가 있습니다. (IDictionary 만 옵션 일 수 있습니다) - VB.Net에 대한 확신이 없습니다. –