C# 将methodinfo或程序集类型写入文件

C# 将methodinfo或程序集类型写入文件,c#,C#,我得到了一些c语言的代码。它所做的唯一一件事就是解压缩嵌入程序集并执行它。我想知道如何将这个正在执行的程序集写入文件以恢复它 public static object RunIt() { Type[] types = DeliverUs.Assembly.GetTypes(); for (int i = 0; i < types.Length; i++) { Type type = types[i]; MethodInfo[] met

我得到了一些c语言的代码。它所做的唯一一件事就是解压缩嵌入程序集并执行它。我想知道如何将这个正在执行的程序集写入文件以恢复它

public static object RunIt()
{
    Type[] types = DeliverUs.Assembly.GetTypes();
    for (int i = 0; i < types.Length; i++)
    {
        Type type = types[i];
        MethodInfo[] methods = type.GetMethods();
        for (int j = 0; j < methods.Length; j++)
        {
            MethodInfo methodInfo = methods[j];
            if (methodInfo.Name == DeliverUs.Name)
            {
                return methodInfo.Invoke(null, DeliverUs.Values);
            }
        }
    }
    return null;
}

我已经试过了,但没有成功。我应该如何处理这个问题并将程序集写入本地文件?MemoryStream?

您可以通过使用二进制序列化来序列化程序集。您应该能够通过二进制序列化将完整反映的程序集对象图存储在文件中。下面是两个使用二进制序列化编写/读取程序集的快速示例

将程序集序列化为文件:

var assembly = Assembly.GetExecutingAssembly();
var formatter = new BinaryFormatter();
using (var file = File.OpenWrite("assembly.bin"))
{
    formatter.Serialize(file, assembly);
    file.Close();
}
从文件反序列化程序集

Assembly assembly;
var formatter = new BinaryFormatter();
using (var file = File.OpenRead("assembly.bin"))
{
    assembly = (Assembly)formatter.Deserialize(file);
    file.Close();
}

我得到的只是垃圾数据或类似的信息:System.UnitySerializationHolder数据UnityStypeAssemblyName Ax:Run,Version=0.0.0,Culture=neutral,PublicKeyToken=nulllyName Ax:Run,Version=0.0.0,Culture=neutral,PublicKeyToken=null Ax+进程信息显示代码,我不知道你是如何使用它的。我已经测试了上面的方法,效果很好。if methodInfo.Name==DeliverUs.Name{var formatter=new BinaryFormatter;使用var file=file.OpenWriteassembly.bin{formatter.Serializefile,type.Assembly;file.Close;}//return methodInfo.Invokenull,DeliverUs.Values;}我猜你的代码是:DeliverUs.Assembly已经有了Assembly对象。为什么不将其本身序列化。为什么要访问type.Assembly?可能是你需要更详细地说明用例。从你的问题中我所了解到的只是一种在文件中序列化程序集的方法。发布的代码就是这样。没关系。我刚刚发现一些代码已从资源字节数组中删除程序集。谢谢。