如何修改附加到某个TypeAttributes
的{{1}}?
我想通过应用Type
标志来修改类型并使其抽象化,我该怎么做?
我确定我需要在某个地方调用CLR,但是我无法追踪它从哪里得到这些信息,它似乎是一个无休止的分层方法系统,可以调用其他方法。
答案 0 :(得分:0)
您可以使用Mono.Cecil等库以编程方式更改类型。 假设你有一个名为" Test"在名为" ExistingAssembly.dll"的程序集中你想转课#34;测试"进入抽象类。 你现在需要做的就是:
void Main(){
//This is the existing assembly containing the type that you wish to modify
var assemblyFile = @"C:\temp\ExistingAssembly.dll";
var ass = Mono.Cecil.AssemblyDefinition.ReadAssembly(assemblyFile);
var type = ass.MainModule.GetTypes().First(t => t.Name == "Test");
//Make the type an Abstract type (class)
type.IsAbstract = true;
//Finally save the modified assembly into a new file
ass.Write(@"C:\temp\ModifiedAssembly.dll");
//The type "Test" in the above "ModifiedAssembly.dll" is now an abstract class.
}
// This is the Type that you wish to turn into an Abstract Class
public class Test {
public string DummyMethod(){
return "Dummy Return";
}
}
你可以从这里获得Mono.Cecil程序集(Nuget): https://www.nuget.org/packages/Mono.Cecil/