我有一个WebApi,其方法可以创建动态类型,如下所示:
[HttpGet]
public object Foo()
{
AssemblyName asmName = new AssemblyName(string.Format("{0}_{1}", "tmpAsm", Guid.NewGuid().ToString("N")));
AssemblyBuilder asmBuilder = AppDomain.CurrentDomain.DefineDynamicAssembly(asmName, AssemblyBuilderAccess.Run);
ModuleBuilder moduleBuilder = asmBuilder.DefineDynamicModule("core");
TypeBuilder typeBuilder = GetTempModule().DefineType("MyDynamicClass", TypeAttributes.Public);
Type proxy = typeBuilder.CreateType();
return Activator.CreateInstance(proxy);
}
似乎内置的序列化程序无法序列化此类,实际上我收到以下错误:
键入' MyDynamicClass'与数据合同名称 ' MyDynamicClass://schemas.datacontract.org/2004/07/' 不是预期的。如果是的话,请考虑使用DataContractResolver 使用DataContractSerializer或添加静态未知的任何类型 已知类型的列表 - 例如,通过使用KnownTypeAttribute 属性或将它们添加到传递给的已知类型列表中 串行器。
我还尝试使用Serializable
属性标记动态类,但仍无效。
有什么建议吗?