una termodinamicas termodinamica tablas tabla sustancias saturada rigido resueltos resuelto refrigerante recipiente que puras pies para masa manejo litros liquida gramos evapora esta embolo ejercicios dispositivo contiene consta completa cilindro agua 134a c# dynamic

c# - termodinamicas - un recipiente rigido contiene 2 kg de refrigerante 134a



Implementación de.net DynamicObject que devuelve nulo para las propiedades faltantes en lugar de una excepción RunTimeBinderException (1)

Me gustaría poder hacer algo como lo siguiente:

dynamic a = new ExpandoObject(); Console.WriteLine(a.SomeProperty ?? "No such member");

pero eso arroja

RunTimeBinderException: ''System.Dynamic.ExpandoObject'' does not contain a definition for ''Throw''

¿Conoce una implementación de DynamicObject que devuelva nulo a las definiciones que faltan, o un tutorial sobre cómo crear una? ¡Muchas gracias!


¿Algo como esto?

using System; using System.Collections.Generic; using System.Dynamic; public class NullingExpandoObject : DynamicObject { private readonly Dictionary<string, object> values = new Dictionary<string, object>(); public override bool TryGetMember(GetMemberBinder binder, out object result) { // We don''t care about the return value... values.TryGetValue(binder.Name, out result); return true; } public override bool TrySetMember(SetMemberBinder binder, object value) { values[binder.Name] = value; return true; } } class Test { static void Main() { dynamic x = new NullingExpandoObject(); x.Foo = "Hello"; Console.WriteLine(x.Foo ?? "Default"); // Prints Hello Console.WriteLine(x.Bar ?? "Default"); // Prints Default } }

Espero que el ExpandoObject real sea bastante más sofisticado que esto, pero si esto es todo lo que necesita ...