[英]Create a new list with values other than a property of the class of the list type
[英]Create a new type based on other type, just changing the name
我有一個類型,想根據這個類型創建一個新類型,只想更改名稱。
例子:
var oldType = someObject.GetType();
var type = CreateNewType(oldType, "newType");
請讓我自己解釋一下:
我正在動態創建多個數據庫(通過在 EF Core 上下文中添加模型)。 這很有效,但僅在第一次嘗試時有效,但在第二次嘗試時無效,因為他將先前的表保留為單例上下文(附加到我所看到的類型)。
只是在這里回答問題本身,即使不是最好的解決方案:
可以從這里改編:
從帶有基類和附加字段的 TypeBuilder 創建動態類型會產生異常
代碼:
public class ClassBuilder
{
readonly AssemblyName _assemblyName;
public ClassBuilder(string className)
{
_assemblyName = new AssemblyName(className);
}
public Type CopyType(Type type, string name)
{
var assemblyBuilder =
AssemblyBuilder.DefineDynamicAssembly(new AssemblyName(name), AssemblyBuilderAccess.Run);
ModuleBuilder moduleBuilder = assemblyBuilder.DefineDynamicModule("MainModule");
TypeBuilder typeBuilder = moduleBuilder.DefineType(_assemblyName.FullName
, TypeAttributes.Public |
TypeAttributes.Class |
TypeAttributes.AutoClass |
TypeAttributes.AnsiClass |
TypeAttributes.BeforeFieldInit |
TypeAttributes.AutoLayout
, type);
typeBuilder.DefineDefaultConstructor(MethodAttributes.Public | MethodAttributes.SpecialName |
MethodAttributes.RTSpecialName);
return typeBuilder.CreateType();
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.