private string GetExtensionValueString(IOptimizedMarkupExtension optimizedMarkupExtensionRecord) { string valueString = string.Empty; short memberId = optimizedMarkupExtensionRecord.ValueId; short extensionId = optimizedMarkupExtensionRecord.ExtensionTypeId; switch (extensionId) { case (short)KnownElements.StaticExtension: valueString = GetStaticExtensionValueString(memberId); break; case (short)KnownElements.TemplateBindingExtension: valueString = GetExtensionPrefixString("TemplateBinding"); valueString += GetTemplateBindingExtensionValueString(memberId); break; case (short)KnownElements.DynamicResourceExtension: valueString = GetExtensionPrefixString("DynamicResource"); valueString += GetInnerExtensionValueString(optimizedMarkupExtensionRecord); break; case (short)KnownElements.StaticResourceExtension: valueString = GetExtensionPrefixString("StaticResource"); valueString += GetInnerExtensionValueString(optimizedMarkupExtensionRecord); break; } return valueString; }
internal virtual object GetExtensionValue( IOptimizedMarkupExtension optimizedMarkupExtensionRecord, string propertyName) { object innerExtensionValue = null; object valueObject = null; short memberId = optimizedMarkupExtensionRecord.ValueId; short extensionTypeId = optimizedMarkupExtensionRecord.ExtensionTypeId; switch (extensionTypeId) { case (short)KnownElements.StaticExtension: valueObject = GetStaticExtensionValue(memberId); break; case (short)KnownElements.DynamicResourceExtension: innerExtensionValue = GetInnerExtensionValue(optimizedMarkupExtensionRecord); valueObject = new DynamicResourceExtension(innerExtensionValue); break; case (short)KnownElements.StaticResourceExtension: innerExtensionValue = GetInnerExtensionValue(optimizedMarkupExtensionRecord); valueObject = new StaticResourceExtension(innerExtensionValue); break; } if (valueObject == null) { string valueTypeName = string.Empty; switch (extensionTypeId) { case (short)KnownElements.StaticExtension: valueTypeName = typeof(StaticExtension).FullName; break; case (short)KnownElements.DynamicResourceExtension: valueTypeName = typeof(DynamicResourceExtension).FullName; break; case (short)KnownElements.StaticResourceExtension: valueTypeName = typeof(StaticResourceExtension).FullName; break; } ThrowException(SRID.ParserCannotConvertPropertyValue, propertyName, valueTypeName); } return valueObject; }
private string GetInnerExtensionValueString(IOptimizedMarkupExtension optimizedMarkupExtensionRecord) { string valueString = string.Empty; short memberId = optimizedMarkupExtensionRecord.ValueId; if (optimizedMarkupExtensionRecord.IsValueTypeExtension) { valueString = GetTypeValueString(memberId); } else if (optimizedMarkupExtensionRecord.IsValueStaticExtension) { valueString = GetStaticExtensionValueString(memberId); } else { valueString = MapTable.GetStringFromStringId(memberId); } return valueString + "}"; }
private object GetInnerExtensionValue(IOptimizedMarkupExtension optimizedMarkupExtensionRecord) { object valueObject = null; short memberId = optimizedMarkupExtensionRecord.ValueId; if (optimizedMarkupExtensionRecord.IsValueTypeExtension) { valueObject = MapTable.GetTypeFromId(memberId); } else if (optimizedMarkupExtensionRecord.IsValueStaticExtension) { valueObject = GetStaticExtensionValue(memberId); } else { valueObject = MapTable.GetStringFromStringId(memberId); } return valueObject; }