/// <inheritdoc /> public bool TryGetPropertyValue(string propertyName, out object value) { // look into the container first to see if it has that property. container would have it // if the property was expanded. if (Container != null) { _containerDict = _containerDict ?? Container.ToDictionary(DefaultPropertyMapper, includeAutoSelected: true); if (_containerDict.TryGetValue(propertyName, out value)) { return(true); } } // fall back to the instance. if (Instance != null) { var type = Instance.GetType(); var edmodel = ModelContainer.GetModel(type); var edrefect = edmodel.GetEdmTypeReference(type); _typedEdmEntityObject = _typedEdmEntityObject ?? new TypedEdmEntityObject(Instance, /*GetEdmType()*/ edrefect as IEdmEntityTypeReference, edmodel /*GetModel()*/); return(_typedEdmEntityObject.TryGetPropertyValue(propertyName, out value)); } value = null; return(false); }
/// <inheritdoc /> public bool TryGetPropertyValue(string propertyName, out object value) { // look into the container first to see if it has that property. container would have it // if the property was expanded. if (Container != null) { _containerDict = _containerDict ?? Container.ToDictionary(DefaultPropertyMapper, includeAutoSelected: true); if (_containerDict.TryGetValue(propertyName, out value)) { return(true); } } // fall back to the instance. if (UseInstanceForProperties && UntypedInstance != null) { _typedEdmEntityObject = _typedEdmEntityObject ?? new TypedEdmEntityObject(UntypedInstance, GetEdmType() as IEdmEntityTypeReference, GetModel()); return(_typedEdmEntityObject.TryGetPropertyValue(propertyName, out value)); } value = null; return(false); }
public void TryGetValue_ReturnsFalse_IfInstanceIsNull() { // Arrange IEdmEntityTypeReference edmType = new Mock <IEdmEntityTypeReference>().Object; IEdmModel edmModel = new Mock <IEdmModel>().Object; TypedEdmEntityObject edmObject = new TypedEdmEntityObject(instance: null, edmType: edmType, edmModel: edmModel); object value; // Act & Assert Assert.False(edmObject.TryGetPropertyValue("property", out value)); Assert.Null(value); }
public void GetEdmType_Returns_InitializedEdmType() { // Arrange IEdmEntityTypeReference edmType = new Mock <IEdmEntityTypeReference>().Object; IEdmModel edmModel = new Mock <IEdmModel>().Object; TypedEdmEntityObject edmObject = new TypedEdmEntityObject(42, edmType, edmModel); // Act IEdmTypeReference result = edmObject.GetEdmType(); // Assert Assert.Same(edmType, result); }
public void Ctor_InitializesProperty_Instance() { // Arrange object instance = new object(); IEdmEntityTypeReference edmType = new Mock <IEdmEntityTypeReference>().Object; IEdmModel edmModel = new Mock <IEdmModel>().Object; // Act TypedEdmEntityObject edmObject = new TypedEdmEntityObject(instance, edmType, edmModel); // Assert Assert.Same(instance, edmObject.Instance); }
public void TryGetValue_ReturnsFalse_IfPropertyIsNotPresent() { // Arrange TestEntity instance = new TestEntity { Property = new object() }; Mock <IEdmEntityTypeReference> mockEdmType = new Mock <IEdmEntityTypeReference>(); mockEdmType.Setup(t => t.Definition).Returns(new Mock <IEdmStructuredType>().Object); IEdmEntityTypeReference edmType = mockEdmType.Object; IEdmModel edmModel = new Mock <IEdmModel>().Object; TypedEdmEntityObject edmObject = new TypedEdmEntityObject(instance, edmType, edmModel); object value; // Act & Assert Assert.False(edmObject.TryGetPropertyValue("NotPresentProperty", out value)); Assert.Null(value); }
private object BuildEntityInstance() { if (EdmObject == null) { return(null); } TypedEdmEntityObject edmEntityObject = EdmObject as TypedEdmEntityObject; if (edmEntityObject != null) { return(edmEntityObject.Instance); } var assemblyNames = Request.HttpContext.RequestServices.GetService <AssembliesResolver>(); Type clrType = EdmLibHelpers.GetClrType(EntityType, EdmModel, assemblyNames); if (clrType == null) { throw new InvalidOperationException(Error.Format(SRResources.MappingDoesNotContainEntityType, EntityType.FullName())); } object resource = Activator.CreateInstance(clrType); foreach (IEdmStructuralProperty property in EntityType.StructuralProperties()) { object value; if (EdmObject.TryGetPropertyValue(property.Name, out value) && value != null) { if (value.GetType().IsCollection()) { DeserializationHelpers.SetCollectionProperty(resource, property, value, property.Name, assemblyNames); } else { DeserializationHelpers.SetProperty(resource, property.Name, value); } } } return(resource); }