本文整理汇总了C#中IField.Value方法的典型用法代码示例。如果您正苦于以下问题:C# IField.Value方法的具体用法?C# IField.Value怎么用?C# IField.Value使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类IField
的用法示例。
在下文中一共展示了IField.Value方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C#代码示例。
示例1: Field
Expression Field(ITransform transform, Expression structVar, UInt16 id, ISchemaField schemaField, IField field)
{
var fieldSchemaType = schemaField.GetSchemaType();
var fieldId = Expression.Constant(id);
var fieldType = Expression.Constant(fieldSchemaType.GetBondDataType());
var fieldValue = DataExpression.PropertyOrField(structVar, schemaField.Name);
var parser = new ObjectParser(this, fieldValue, fieldSchemaType);
var processField = field != null
? field.Value(parser, fieldType)
: transform.UnknownField(parser, fieldType, fieldId) ?? Expression.Empty();
var omitField = field != null
? field.Omitted : Expression.Empty();
Expression cannotOmit;
if (fieldSchemaType.IsBondStruct() || fieldSchemaType.IsBonded() || schemaField.GetModifier() != Modifier.Optional)
{
cannotOmit = Expression.Constant(true);
}
else
{
var defaultValue = schemaField.GetDefaultValue();
if (fieldSchemaType.IsBondBlob())
{
cannotOmit = Expression.NotEqual(
typeAlias.Convert(fieldValue, fieldSchemaType),
Expression.Default(typeof(ArraySegment<byte>)));
}
else if (fieldSchemaType.IsBondContainer())
{
cannotOmit = defaultValue == null
? Expression.NotEqual(fieldValue, Expression.Constant(null))
: Expression.NotEqual(ContainerCount(fieldValue), Expression.Constant(0));
}
else
{
cannotOmit = Expression.NotEqual(fieldValue, Expression.Constant(defaultValue));
}
}
return PrunedExpression.IfThenElse(cannotOmit, processField, omitField);
}