Возможно ли написать сборку C#, которая при загрузке будет вводить метод в класс из другой сборки? Если да, будет ли введенный метод доступен на языках с использованием DLR, например IronPython?C# обезьяна patching - возможно ли это?
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. Другим решением было бы иметь метод чтения/записи объекта файла, который использует байты [] вместо байтов (что было бы безопасно). Проблема в том, что я не могу передать то, что я прочитал из файла с f.read(), в метод, реализованный в сборке C#, который использует byte [], так как это фактически получит строку. В настоящее время мне нужно перебирать каждый символ и вручную создавать байт []. У меня есть гигабайты для обработки. – Meh
Я не эксперт на C#, может ли он разрешить доступ только для чтения к базовому хранилищу? Что-то вроде const void *. – Meh
Да, есть ReadOnlyCollection. Я не знаю, копирует ли эти данные, хотя (надеюсь, нет). –