我将动态属性名称及其类型存储在字典中,如何在 silverlight 中动态构建一个类?

发布于 2024-11-16 04:43:16 字数 164 浏览 2 评论 0原文

我有一个在运行时填充的动态字典,

Dictionary (其中 string 将具有属性名称,而 Type 将具有属性的类型)现在我想生成一个类除此之外,

我如何在 silverlight 中实现它?

I have a dynamic Dictionary that gets filled at run time,

Dictionary<string, Type> (where string will have the property name and Type will have the type of the property ) now i want to generate a class out of it,

how do i achieve it in silverlight?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

醉生梦死 2024-11-23 04:43:16
        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);
        }
        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);
        }
早乙女 2024-11-23 04:43:16

我不相信你可以在运行时执行此操作(生成一个类),你可以做的是利用 ExpandoObject 在 .net 4.0 中可用。

I don't believe you can do this at runtime (generate a class), what you could do is make use of the ExpandoObject available in .net 4.0.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文