首页 新闻 赞助 找找看

如何使用Emit定义相互引用的2个类型?

0
悬赏园豆:200 [已解决问题] 解决于 2019-06-04 09:18

想要使用Emit生成的2个类型:

public class User
{
    public int UserId { get; set; }
    public int DepartmentId { get; set; }
    public Department Department { get; set; }
    public DateTime CreateTime { get; set; }
}

public class Department
{
    public int DepartmentId { get; set; }
    public List<User> User { get; set; }
    public DateTime CreateTime { get; set; }
}

难点在,我们这里的类,发生了互相引用。
下面是我的代码:

        var assemblyName = new AssemblyName("DynamicTypes");
        var assemblyBuilder = AssemblyBuilder.DefineDynamicAssembly(assemblyName, AssemblyBuilderAccess.Run);
        var moduleBuilder = assemblyBuilder.DefineDynamicModule("DynamicTypes");

        var typeBuilder = moduleBuilder.DefineType($"DynamicTypes.User", TypeAttributes.Public);

        var methodBuilder = typeBuilder.DefineProperty("Department", PropertyAttributes.None, typeof(), Type.EmptyTypes);

但是,我这里使用的DefineProperty的type参数,根本不知道怎么填,因为填任何一个类型,都需要知道所依赖的类型,这样就导致没法创建任何一个类型,所以进入了死胡同。
大神可有高见?
还望指教,多谢多谢

JinChou的主页 JinChou | 初学一级 | 园豆:22
提问于:2019-06-03 15:40
< >
分享
最佳答案
0

typeof() => 使用Department的TypeBuilder,因为TypeBuilder也是Type类型

收获园豆:200
jello chen | 大侠五级 |园豆:7306 | 2019-06-03 23:31

厉害,问题解决

JinChou | 园豆:22 (初学一级) | 2019-06-04 09:17

没懂,请问能写一下吗

一叶兰舟飘 | 园豆:351 (菜鸟二级) | 2020-09-18 21:41
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册