У меня есть динамические имена свойств и их типы, хранящиеся в словаре, как мне динамически создать класс из него в silverlight? - PullRequest
0 голосов
/ 21 июня 2011

У меня есть динамический словарь, который заполняется во время выполнения,

Dictionary<string, Type> (где строка будет иметь имя свойства, а тип будет иметь тип свойства) Теперь я хочу создать класс изиз этого,

как мне добиться этого в Silverlight?

Ответы [ 2 ]

3 голосов
/ 21 июня 2011
        Dictionary<string, Type> props = new Dictionary<string,Type>();
        props["Id"] = typeof(int);
        props["Name"] = typeof(string);

        AssemblyBuilder ab = AppDomain.CurrentDomain.DefineDynamicAssembly(new AssemblyName("AsemName"), AssemblyBuilderAccess.RunAndSave);
        ModuleBuilder mb = ab.DefineDynamicModule("ModuleName");
        TypeBuilder typeBuilder = mb.DefineType("TypeName", TypeAttributes.Public);
        foreach(var name in props.Keys){
            typeBuilder.DefineField(name, props[name], FieldAttributes.Public);
        }
        Type type = typeBuilder.CreateType();

        object o = type.GetConstructor(Type.EmptyTypes).Invoke(null);

        //Verfication:
        Console.WriteLine("Type is: " + o.GetType());

        foreach (var field in o.GetType().GetFields())
        {
            Console.WriteLine(" " + field.Name + " of type " + field.ReflectedType);
        }
0 голосов
/ 21 июня 2011

Я не верю, что вы можете сделать это во время выполнения (сгенерировать класс), что вы можете сделать, это использовать ExpandoObject , доступный в .net 4.0.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...