本文整理汇总了C#中DObject.DefineOwnProperty方法的典型用法代码示例。如果您正苦于以下问题:C# DObject.DefineOwnProperty方法的具体用法?C# DObject.DefineOwnProperty怎么用?C# DObject.DefineOwnProperty使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类DObject
的用法示例。
在下文中一共展示了DObject.DefineOwnProperty方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C#代码示例。
示例1: DefineProperty
private void DefineProperty(DObject O, string name, DObject desc)
{
if (desc == null || O == null || name == null)
Trace.Fail("TypeError");
var getter = new DValue();
var setter = new DValue();
var value = new DValue();
var attributes = PropertyDescriptor.Attributes.NotEnumerable | PropertyDescriptor.Attributes.NotWritable | PropertyDescriptor.Attributes.NotConfigurable;
attributes = PropertyDescriptor.Attributes.NotEnumerable | PropertyDescriptor.Attributes.NotWritable | PropertyDescriptor.Attributes.NotConfigurable;
getter.SetUndefined();
setter.SetUndefined();
value.SetUndefined();
value = desc.HasProperty("value") ? desc.GetField("value") : value;
if (desc.HasProperty("enumerable"))
attributes &= desc.GetField("enumerable").AsBoolean() ? ~PropertyDescriptor.Attributes.NotEnumerable : attributes;
if (desc.HasProperty("configurable"))
attributes &= desc.GetField("configurable").AsBoolean() ? ~PropertyDescriptor.Attributes.NotConfigurable : attributes;
if (desc.HasProperty("writable"))
attributes &= desc.GetField("writable").AsBoolean() ? ~PropertyDescriptor.Attributes.NotWritable : attributes;
if (desc.HasProperty("get"))
{
getter = desc.GetField("get");
if (!ValueTypesHelper.IsUndefined(getter.ValueType) && !ValueTypesHelper.IsFunction(getter.ValueType))
Trace.Fail("TypeError");
}
if (desc.HasProperty("set"))
{
setter = desc.GetField("set");
if (!ValueTypesHelper.IsUndefined(setter.ValueType) && !ValueTypesHelper.IsFunction(setter.ValueType))
Trace.Fail("TypeError");
}
Trace.Assert(
!((desc.HasProperty("get") || desc.HasProperty("set"))
&& (desc.HasProperty("value") || desc.HasProperty("writable"))),
"If either getter or setter needs to be defined, value or writable shouldn't be defined.");
if (desc.HasProperty("value"))
O.DefineOwnProperty(name, ref value, attributes | PropertyDescriptor.Attributes.Data);
else
{
var property = new DProperty();
if (ValueTypesHelper.IsFunction(getter.ValueType))
property.Getter = getter.AsDFunction();
if (ValueTypesHelper.IsFunction(setter.ValueType))
property.Setter = setter.AsDFunction();
O.DefineOwnProperty(name, property, attributes | PropertyDescriptor.Attributes.Accessor);
}
}