将methodinfo或汇编类型写入文件

时间:2014-02-03 16:33:02

标签: c#

我得到了一些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;
}

我已经尝试过AssemblyBuilder没有成功。我该如何解决这个问题并将程序集写入本地文件?的MemoryStream?

1 个答案:

答案 0 :(得分:0)

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

将程序集序列化为文件:

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();
}