Avatar billede repsak Nybegynder
25. februar 2005 - 13:25 Der er 2 kommentarer og
1 løsning

Sætte alle fields til en værdi - dynamisk

Jeg har en klasse med en masse public fields (med vilje ikke properties). Hvordan skriver jeg denne konstruktion:
----
fields[]; //fields = minDemo.GetType().GetAllPublicFields()
values[]; //values.Length er lig fields.Length
for(int i=0; i<fields.Length ; i++){
    fields[i] = values[i];
}
---
denne konstruktion skal smide værdien fra values[i] over i variablen fields[i] - alle af typen string.

Håber at pseudoen giver meming :)

Mit udgangspunkt for opgaven er naturligvis Reflections...
Avatar billede arne_v Ekspert
25. februar 2005 - 19:00 #1
Du mener noget a la:

using System;
using System.Reflection;

public class MainClass
{
    public static void DynSet(Object o, string[] vals)
    {
        FieldInfo[] fields = o.GetType().GetFields();
        for(int i = 0; i < fields.Length; i++)
        {
            fields[i].SetValue(o, vals[i]);
        }
    }
    public static void Main(string[] args)
    {
        A a = new A();
        string[] vals = { "a", "bb", "ccc" };
        DynSet(a, vals);
        Console.WriteLine(a.a + " " + a.b + " " + a.c);
    }
}

public class A
{
    public string a;
    public string b;
    public string c;
}
Avatar billede repsak Nybegynder
27. februar 2005 - 15:55 #2
Hmm SetValue, ja hvem kunne have regnet det ud :-/

Men det var faktisk det jeg skulle bruge. Underligt at jeg havde overset den i doc'en.

Jeg takker - svar
Avatar billede arne_v Ekspert
27. februar 2005 - 16:00 #3
kommer her
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
IT-kurser om Microsoft 365, sikkerhed, personlig vækst, udvikling, digital markedsføring, grafisk design, SAP og forretningsanalyse.

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester