想要使用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参数,根本不知道怎么填,因为填任何一个类型,都需要知道所依赖的类型,这样就导致没法创建任何一个类型,所以进入了死胡同。
大神可有高见?
还望指教,多谢多谢
typeof() => 使用Department的TypeBuilder,因为TypeBuilder也是Type类型
厉害,问题解决
没懂,请问能写一下吗