Je suis occupé à construire ma propre grille de propriété. L'un des problèmes que je me débats avec actuellement concerne des collections. Ajoutant spécifiquement un nouvel élément à une collection.
J'ai un objet appelé CollectionDataSource qui est une liste contenant des objets de type T. P>
Je reçois le type de t et créant un nouvel objet T comme Suit: P>
var type = CollectionDataSource.GetType().GetGenericArguments().Single(); var newItem = Activator.CreateInstance(type);
3 Réponses :
Pourquoi ne pas le jeter à une liste en premier lieu?
public static Object TryConvertTo<T>(string input) { Object result = null; try { result = Convert.ChangeType(input, typeof(T)); } catch { } return result; }
var c = CollectionDataSource en tant que liste
CollectionDataSource et NewItem sont du même type. Ainsi, NewItem peut être ajouté à la collectionDataSource, mais le problème est le type n'est pas connu à l'avance. J'ai besoin de déterminer cela pendant l'exécution et de la Collection de CollectionDataSource qui est un objet à la liste
public void Add<T>(T toAdd) where T: class { _list.Add(toAdd); }
On dirait que la réponse est simple. Tout ce que je devais faire était de voter CollectionDataSource à (IList). Problème résolu
Quel était le problème alors? Mise en œuvre explicite de l'interface?
Vous pouvez lancer sur un iénumérable puis jeter à une liste ou jeté directement dans une liste?
Comment je me lancer dans une liste si je ne connais pas le type de liste?
Comment pouvez-vous même être sûr que le type de
CollectionDataSource code> prend en charge i> le fonctionnement de l'ajout d'éléments?
@Sweeper il n'y a aucune garantie, mais cela devrait être comme ça. Sinon, alors évidemment une erreur sera lancée qui va bien