【发布时间】:2020-07-15 14:12:11
【问题描述】:
我可以在模型中使用 DynamicObject。我想在剃须刀页面中使用它。有可能吗?
public class ProductsModel
{
public ProductDetail ProductDetail { get; set; }
public MyDynamicClass
}
以下简单示例允许在运行时添加任意动态属性。该类覆盖 TrySetMember 和 TryGetMember 虚拟方法以提供行为。请注意,这些方法有一个 binder 参数,该参数提供有关正在尝试的动态操作的信息,例如属性名称 (binder.Name)。另请注意,这些方法返回一个布尔值以向运行时指示动态操作是否成功。
class MyDynamicClass : DynamicObject
{
private readonly Dictionary<string, object> _dynamicProperties = new Dictionary<string, object>();
public override bool TrySetMember(SetMemberBinder binder, object value)
{
_dynamicProperties.Add(binder.Name, value);
// additional error checking code omitted
return true;
}
public override bool TryGetMember(GetMemberBinder binder, out object result)
{
return _dynamicProperties.TryGetValue(binder.Name, out result);
}
public override string ToString()
{
var sb = new StringBuilder();
foreach (var property in _dynamicProperties)
{
sb.AppendLine($"Property '{property.Key}' = '{property.Value}'");
}
return sb.ToString();
}
public override IEnumerable<string> GetDynamicMemberNames()
{
return _dynamicProperties.Keys;
}
}
【问题讨论】:
标签: c# asp.net-core