是否有可能编写一个C#程序集,在加载时将一个方法从另一个程序集注入到类中?如果是的话,注入的方法是否可以使用DLR的语言,如IronPython?C#猴子补丁 - 有可能吗?
namespace IronPython.Runtime
{
public class Bytes : IList<byte>, ICodeFormattable, IExpressionSerializable
{
internal byte[] _bytes;
//I WANT TO INJECT THIS METHOD
public byte[] getbytes()
{
return _bytes;
}
}
}
我需要该方法,并且我想避免重新编译IronPython(如果可能)。
这对我的需求来说太慢了。我必须构建数以百万计的ctypes.Structs。我想我找到了一个解决方案,使用扩展方法和GetBoundMethod来注入我需要的东西。另一种解决方案是使用文件对象读/写方法,它使用byte []而不是Bytes(这将是安全的)。问题是我无法将从f.read()读取的文件传递给在使用byte []的C#程序集中实现的方法,因为它实际上会接收一个字符串。目前我需要迭代每个字符并从中手动构建一个字节[]。我有千兆字节来处理。 – Meh 2010-05-18 17:30:54
我不是C#专家,它是否允许对底层存储进行只读访问?类似于const void *。 – Meh 2010-05-18 17:37:11
是的,有ReadOnlyCollection。我不知道它是否复制了基础数据,尽管(我不希望)。 –
2010-05-18 21:04:52