0
votes

Ajouter un objet de type T à l'objet de la liste de types

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);

c#

4 commentaires

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 prend en charge 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


3 Réponses :


0
votes

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;
}


2 commentaires

var c = CollectionDataSource en tant que liste me donne une variable null


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 où T est défini pendant l'exécution



0
votes
public void Add<T>(T toAdd) where T: class { _list.Add(toAdd); }

0 commentaires

0
votes

On dirait que la réponse est simple. Tout ce que je devais faire était de voter CollectionDataSource à (IList). Problème résolu xxx


1 commentaires

Quel était le problème alors? Mise en œuvre explicite de l'interface?