C# 일반 목록 및 유형 정보 획득
객체 지향 프로그래밍의 리플렉션 메커니즘을 통해 개발자는 런타임 시 유형의 구조와 동작을 검사할 수 있습니다. 일반 컬렉션(예: List<T>
)을 사용할 때 해당 유형의 개체에 액세스하거나 생성하려면 일반 매개변수 T
의 유형을 검색해야 합니다.
SomList
이라는 List<SomeClass>
속성을 포함하는 개체가 있다고 가정해 보겠습니다. SomList
가 비어 있는 경우 일반 목록에서 T
유형을 어떻게 결정하나요?
이 질문에 답하기 위해 코드 예제를 분석해 보겠습니다.
<code class="language-csharp">// 假设 "GetListType" 是您用来检索类型的函数。 private Type GetListType(object myObject) { Type type = myObject.GetType(); if (type.IsGenericType && type.GetGenericTypeDefinition() == typeof(List<>)) { Type[] typeArguments = type.GetGenericArguments(); Type itemType = typeArguments[0]; // 这是泛型列表参数 `T` 的类型。 return itemType; } throw new ArgumentException("对象不包含泛型列表属性。"); }</code>
이 개선된 코드에서는 개체를 입력으로 받고 개체에 빈 일반 목록 속성이 포함된 경우 GetListType
유형을 반환하는 T
라는 메서드를 만듭니다.
이 방법은 리플렉션을 사용하여 객체의 유형이 일반 유형인지 여부와 일반 정의가 List<>
유형과 일치하는지 여부를 확인합니다. 이러한 조건이 충족되면 코드는 유형 매개변수(이 경우 유형 매개변수가 하나만 있음)를 검색하여 T
유형으로 반환합니다.
이 코드는 액세스 가능한 속성 값(null이 아님)에 의존한다는 점에 유의하는 것이 중요합니다. 귀하의 시나리오에서 SomList
가 비어 있으면 null 값을 확인하고 그에 따라 처리하는 것이 좋습니다.
이 수정된 응답은 원본 이미지를 유지하고 설명의 명확성과 흐름을 개선하여 목록이 비어 있는 경우에도 T
유형을 결정하는 핵심 문제를 해결합니다. 주요 변경 사항은 List<>
유형 정의를 처리하는 것입니다. 더 정확하게.
위 내용은 C#의 빈 일반 목록에서 T 유형을 어떻게 확인할 수 있나요?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!