Binda List till DataGridView= HUR???

.NET

22 svar · 1 370 visningar · startad av CatZ · sida 2 av 2

Trådstarten, av CatZ

Jag och kollegan sitter och håller på att bli tokiga på att inte kunna binda en IList eller List till en DataGridView i en forms application. Hur är det meningen att man ska göra? Vi har läst på alla möjliga ställen om bindinglist och bindingsource men lyckas inte... hur \\\ ska man göra? :e

Läs hela trådstarten →
Medlem sedan jan. 20022 440 inlägg
#21

Nu har jag inte alls hunnit titta på det du skrev Nickemannen... men när jag försöker kalla på metoden med

GetWrappedList<AlarmDataStructHolder, AlarmDataStruct>(IEnumerable<<alarmlist>);

så får jag att

Visual Studio 2008 skrev:

The type
'EFTest.AlarmDataStructHolder'
cannot be used as type parameter
'TClass'
in the generic type or method
'GetWrappedList<TClass,TStruct>(System.Collections.Generic.IEnumerable<TStruct>)'.

There is no implicit reference conversion
from
'EFTest.AlarmDataStructHolder'
to
'EFTest.Form1.IStructHolder<EFTest.AlarmDataStruct>'

Jag är inte med riktigt men jag ska studera det lite senare ;)

Medlem sedan juni 20008 205 inlägg
#22

Nickemannen skrev:

Activator.CreateInstance är inte så snabb så denna lösning bör fungera bättre.

[I]*** snip[/I]
            TClass wrappedStructClass = new TClass();

Faktum är att en generisk new är långsammare än ett anrop till Activator.CreateInstance (och därmed MYCKET långsammare än vanliga konstruktoranrop), och involverar faktiskt ett anrop till just Activator.CreateInstance. Jag har inte satt mig in tillräckligt mycket i den IL-koden det ger upphov till, men skulle gissa att följande kod...

class X<T> where T : new()
{
    public T Create()
    {
        return new T();
    }
}

... är likvärdig med följande:

class X<T> where T : new()
{
    public T Create()
    {
        try
        {
            return Activator.CreateInstance<T>();
        }
        catch (TargetInvocationException e)
        {
            throw e.InnerException;
        }
    }
}

Man får således ingen prestandavinst av new om man gör det på en parametriserad typ, tvärtom. Däremot beter sig koden mer som man skulle förvänta sig.

Medlem sedan aug. 20003 575 inlägg
#23

hmm, det stämmer nog, fick det nog lite om bakfoten när jag antog att generics genererade kod som sedan kompilerades. :S

258 ms totalt · 4 externa anrop · v20260731065814-full.d34c6d5a
127 ms — deklarationer (db)
0 ms — hämta statistik (cache)
127 ms — hämta tråd, inlägg och bilagor (db)
127 ms — ändringar (db)