У меня есть прецедент, где мне нужно будет добавлять свойства к динамическому объекту в C# при чтении, в отличие от записи. То есть что-то вроде этого:Динамически добавлять свойство на чтение-доступ к DynamicObject или ExpandoObject
class Foo : DynamicObject
{
private readonly Dictionary<string, object> _properties = new Dictionary<string, object>();
public override bool TryGetMember(GetMemberBinder binder, out object result)
{
if (!_properties.TryGetValue(binder.Name, out result)
{
result = object();
_properties.Add(binder.Name, result);
}
return true;
}
}
class Test
{
public void Bar()
{
var o = new Foo();
// Fails!
var prop = o.SomeProperty;
}
}
Конечная цель - использовать эту прокладку в выражениях LINQ. Я действительно не забочусь о возвращаемом значении, все, что я хочу, - это удобный способ для записи записи того факта, что к этому свойству был доступ, а затем использовать его позже при проверке дерева выражений.
Возможно ли это с помощью C#?
Спасибо, глупо, что я забыл ключевое слово 'dynamic' по использованию ... –