2015-10-30 1 views
-4

я прочитал здесь, как create anonymous types at runtime in c#создание любого типа. type mytpe = typeof (ничего) ;?

AssemblyBuilder dynamicAssembly = 
AppDomain.CurrentDomain.DefineDynamicAssembly(new AssemblyName("MyDynamicAssembly"), 
    AssemblyBuilderAccess.Run); 

string propertyName = "prp_1"; 
//Type propertyType = new Type(); 

ModuleBuilder dynamicModule = dynamicAssembly.DefineDynamicModule("MyDynamicAssemblyModule"); 
TypeBuilder dynamicType = dynamicModule.DefineType("MyDynamicType", TypeAttributes.Public); 
PropertyBuilder property = 
dynamicType.DefineProperty(
        propertyName, 
        System.Reflection.PropertyAttributes.None, 
        propertyType,    // idk what to put here? 
        new[] { propertyType } // and here ? 
       ); 

//call this first 
AddProperty(dynamicType, propertyName, propertyType); 

//then we ' ll dynamic type 
Type myType = dynamicType.CreateType(); 

функция, которая называется

public static void AddProperty(TypeBuilder typeBuilder, string propertyName, Type propertyType) 

есть PropertyType в коде я не знаю, что поставить там. я могу сделать

type mytype = \\typefree? 

спасибо.

+1

Одна полезная ссылка для вас: http://stackoverflow.com/help/how-to-ask – LBes

+1

После появления '@' C# и C# учитывается регистр. Попробуйте/HTML/Html/ –

+0

henk, который действительно сработал. Я также получил большой текст в формате HTML от другого, так что какой-то ум, чем вы ... так много –

ответ

1

EDIT: Этот ответ был верным для вопроса, но вопрос с тех пор был изменен.

Я думаю, что вы ищете тип объекта так, если свойство было строка, то вы будете использовать

typeof(string) 

вместо PropertyType. Ах, простите анонимный бит. Вы можете попробовать использовать динамический

typeof(dynamic) 

, который будет иметь тот же эффект, как

typeof(object) 

, но динамика не типизированного поэтому любые свойства, которые не существуют не заберут до выполнения и оба немного похоже на высказывание «положите что-нибудь здесь». Самое безопасное и лучшее, что нужно сделать, - создать класс для анонимного типа.

+0

3-й вариант должен работать тогда. но нет способа определить тип анонимного, поскольку он анонимный. – Dhunt