У меня есть класс .NET, который я хочу использовать как в C #, так и в PowerShell. Сократите до гола, это что-то вроде этого:
class Record
{
Dictionary<string, string> _fields = new Dictionary<string, string>();
public IDictionary<string, string> Fields { get { return _fields; } }
//...other stuff...
}
Итак, я откуда-то получаю запись, и я могу сделать запись. Поля ["foo"] = "bar" для изменения / добавления полей из C # или PowerShell. Прекрасно работает.
Но я бы хотел сделать его немного более дружественным к PowerShell. Я хочу сделать record.foo = "bar" и заставить его вызывать соответствующие методы получения и установки. (Я хотел бы сделать то же самое с C # в какой-то момент, возможно, с использованием динамического, но это отдельный забавный проект). Похоже, мне нужен класс прокси-сервера.
Я знаю об add-member, но я беспокоюсь, что он будет медленным и использует много памяти при работе с десятками тысяч записей. Я также не знаю, как заставить его обрабатывать record.somenewvalue = "abc".
Я предполагаю, что хочу создать свой прокси-класс в C #, используя средства System.Management.Automation или Microsoft.PowerShell, но не знаю, с чего начать. Может ли кто-нибудь помочь направить меня в правильном направлении?