Maison >développement back-end >C++ >Comment puis-je déterminer le type de T dans une liste générique vide en C# ?
Liste générique C# et acquisition d'informations de type
Le mécanisme de réflexion dans la programmation orientée objet permet aux développeurs d'inspecter la structure et le comportement des types au moment de l'exécution. Lors de l'utilisation d'une collection générique (telle que List<T>
), le type du paramètre générique T
doit être récupéré afin d'accéder ou de créer un objet de ce type.
Supposons que vous ayez un objet qui contient une propriété SomList
nommée List<SomeClass>
. Comment déterminer le type de SomList
dans une liste générique si T
est vide ?
Analysons un exemple de code pour répondre à cette question :
<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>
Dans ce code amélioré, nous créons une méthode nommée GetListType
qui reçoit un objet en entrée et renvoie le type de T
si l'objet contient une propriété de liste générique vide.
Cette méthode utilise la réflexion pour déterminer si le type de l'objet est un type générique et si la définition générique correspond au type List<>
. Si ces conditions sont remplies, le code récupère les paramètres de type (dans ce cas il n'y a qu'un seul paramètre de type) et le renvoie comme type de T
.
Il est important de noter que ce code repose sur le fait que la valeur de la propriété soit accessible (non nulle). Dans votre scénario, si SomList
est vide, vous souhaiterez peut-être vérifier la valeur nulle et la gérer en conséquence.
Cette réponse révisée conserve l'image originale et améliore la clarté et la fluidité de l'explication, abordant le problème principal de la détermination du type T
même lorsque la liste est vide. Le changement clé réside dans la gestion de la définition du type List<>
. plus précisément.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!