Skip to content

Commit e851748

Browse files
author
Chris Santero
committed
store relationship configurations by name instead of property
It breaks for inheritance
1 parent e14592e commit e851748

3 files changed

Lines changed: 6 additions & 7 deletions

File tree

JSONAPI.Autofac/JsonApiAutofacModule.cs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -43,7 +43,7 @@ protected override void Load(ContainerBuilder builder)
4343
{
4444
IResourceTypeRelationshipConfiguration relationshipConfiguration;
4545
if (resourceTypeConfiguration.RelationshipConfigurations
46-
.TryGetValue(relationship.Property, out relationshipConfiguration))
46+
.TryGetValue(relationship.Property.Name, out relationshipConfiguration))
4747
{
4848
if (relationshipConfiguration.MaterializerType != null)
4949
{
@@ -109,7 +109,7 @@ protected override void Load(ContainerBuilder builder)
109109

110110
// First, see if they have set an explicit materializer for this relationship
111111
IResourceTypeRelationshipConfiguration relationshipConfiguration;
112-
if (configuration.RelationshipConfigurations.TryGetValue(relationship.Property,
112+
if (configuration.RelationshipConfigurations.TryGetValue(relationship.Property.Name,
113113
out relationshipConfiguration) && relationshipConfiguration.MaterializerType != null)
114114
return (IRelatedResourceDocumentMaterializer)context.Resolve(relationshipConfiguration.MaterializerType, parameters);
115115

JSONAPI/Configuration/IResourceTypeConfiguration.cs

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,6 @@
11
using System;
22
using System.Collections.Generic;
33
using System.Linq.Expressions;
4-
using System.Reflection;
54
using JSONAPI.Core;
65

76
namespace JSONAPI.Configuration
@@ -34,7 +33,7 @@ public interface IResourceTypeConfiguration
3433
/// <summary>
3534
/// Configurations for this type's resources
3635
/// </summary>
37-
IDictionary<PropertyInfo, IResourceTypeRelationshipConfiguration> RelationshipConfigurations { get; }
36+
IDictionary<string, IResourceTypeRelationshipConfiguration> RelationshipConfigurations { get; }
3837

3938
/// <summary>
4039
/// A factory to use to build expressions to filter a collection of resources of this type by ID.

JSONAPI/Configuration/ResourceTypeConfiguration.cs

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -19,15 +19,15 @@ public sealed class ResourceTypeConfiguration<TResourceType> : IResourceTypeConf
1919
internal ResourceTypeConfiguration(IResourceTypeRegistrar resourceTypeRegistrar)
2020
{
2121
_resourceTypeRegistrar = resourceTypeRegistrar;
22-
RelationshipConfigurations = new ConcurrentDictionary<PropertyInfo, IResourceTypeRelationshipConfiguration>();
22+
RelationshipConfigurations = new ConcurrentDictionary<string, IResourceTypeRelationshipConfiguration>();
2323
ClrType = typeof (TResourceType);
2424
}
2525

2626
public string ResourceTypeName { get; private set; }
2727
public Type ClrType { get; private set; }
2828
public Type DocumentMaterializerType { get; private set; }
2929
public Func<ResourceTypeRelationship, Type> RelatedResourceMaterializerTypeFactory { get; private set; }
30-
public IDictionary<PropertyInfo, IResourceTypeRelationshipConfiguration> RelationshipConfigurations { get; private set; }
30+
public IDictionary<string, IResourceTypeRelationshipConfiguration> RelationshipConfigurations { get; private set; }
3131
public Func<ParameterExpression, string, BinaryExpression> FilterByIdExpressionFactory { get; private set; }
3232
public Func<ParameterExpression, Expression> SortByIdExpressionFactory { get; private set; }
3333

@@ -43,7 +43,7 @@ public void ConfigureRelationship(Expression<Func<TResourceType, object>> proper
4343
var config = new ResourceTypeRelationshipConfiguration();
4444
configurationAction(config);
4545

46-
RelationshipConfigurations[propertyInfo] = config;
46+
RelationshipConfigurations[propertyInfo.Name] = config;
4747
}
4848

4949
public void UseDocumentMaterializer<TMaterializer>()

0 commit comments

Comments
 (0)