как мне стыдно! проблема была в опечатке, которую я не заметил. Обещаю в следующий раз быть более внимательным при чтении своего кода.
После этого ответа на мой вопрос «получить или установить несуществующие свойства объекта Powershell» я погуглил IDynamicMetaObjectProvider и нашел это1 и эти сообщения. Затем я попытался реализовать класс с помощью DynamicObject в PowerShell, но не получил ожидаемого результата.
Код: Выделить всё
$source = @'
using System.Dynamic;
using System.Collections.Generic;
public class testDynamicObject : DynamicObject
{
readonly Dictionary _dictionary = new Dictionary();
public override bool TryGetMember(GetMemberBinder binder, out object result)
{
return _dictionary.TryGetValue(binder.Name, out result);
}
public override bool TrySetMember(SetMemberBinder binder, object value)
{
_dictionary.Add(binder.Name,value);
object obj;
return _dictionary.TryGetValue(binder.Name, out obj);
}
}
'@
Add-Type -TypeDefinition $Source
$obj = [testDynamicObject]::new()
$obj.prob = 'abc'
$obj.prop
Может быть, я пропустил что-то очевидное при переходе с C# на PowerShell?
context
Код: Выделить всё
Name Value
---- -----
PSVersion 5.1.19041.6456
PSEdition Desktop
PSCompatibleVersions {1.0, 2.0, 3.0, 4.0...}
BuildVersion 10.0.19041.6456
CLRVersion 4.0.30319.42000
WSManStackVersion 3.0
PSRemotingProtocolVersion 2.3
SerializationVersion 1.1.0.1