Skip to content

Commit

Permalink
Removed TypeBasedOverride
Browse files Browse the repository at this point in the history
Fixed #201
  • Loading branch information
ENikS committed Mar 16, 2023
1 parent ed48c80 commit 48b0cf2
Show file tree
Hide file tree
Showing 5 changed files with 55 additions and 37 deletions.
59 changes: 37 additions & 22 deletions src/Resolution/Overrides/Contract/DependencyOverride.cs
Original file line number Diff line number Diff line change
Expand Up @@ -31,7 +31,7 @@ public class DependencyOverride : ResolverOverride,
/// <param name="contractType">Type of the <see cref="Contract"/></param>
/// <param name="value">Value to override with</param>
public DependencyOverride(Type contractType, object? value)
: base(Contract.AnyContractName, value, MatchRank.Compatible) => Type = contractType;
: base(Contract.AnyContractName, value) => Type = contractType;

/// <summary>
/// Create an instance of <see cref="DependencyOverride"/> to override
Expand All @@ -40,7 +40,7 @@ public DependencyOverride(Type contractType, object? value)
/// <param name="contractName">Name of the <see cref="Contract"/></param>
/// <param name="value">Value to override with</param>
public DependencyOverride(string contractName, object? value)
: base(contractName, value, MatchRank.Compatible)
: base(contractName, value)
{
}

Expand All @@ -52,7 +52,7 @@ public DependencyOverride(string contractName, object? value)
/// <param name="contractType">Type of the <see cref="Contract"/></param>
/// <param name="value">Value to override with</param>
public DependencyOverride(Type contractType, string? contractName, object? value)
: base(contractName, value, MatchRank.Compatible) => Type = contractType;
: base(contractName, value) => Type = contractType;

/// <summary>
/// Create an instance of <see cref="DependencyOverride"/> to override
Expand All @@ -63,12 +63,44 @@ public DependencyOverride(Type contractType, string? contractName, object? value
/// <param name="contractType">Type of the <see cref="Contract"/></param>
/// <param name="value">Value to override with</param>
public DependencyOverride(Type? targetType, Type contractType, string? contractName, object? value)
: base(targetType, contractName, value, MatchRank.Compatible) => Type = contractType;
: base(targetType, contractName, value) => Type = contractType;

#endregion


#region Match
#region IMatchContract

/// <inheritdoc />
public MatchRank RankMatch(ParameterInfo member, Type contractType, string? contractName)
=> null != Target && member.Member.DeclaringType != Target
? MatchRank.NoMatch
: MatchContract(contractType, contractName);

/// <inheritdoc />
public MatchRank RankMatch(FieldInfo field, Type contractType, string? contractName)
=> null != Target && field.DeclaringType != Target
? MatchRank.NoMatch
: MatchContract(contractType, contractName);

/// <inheritdoc />
public MatchRank RankMatch(PropertyInfo property, Type contractType, string? contractName)
=> null != Target && property.DeclaringType != Target
? MatchRank.NoMatch
: MatchContract(contractType, contractName);

#endregion


#region IEquatable<MatchRank>

/// <inheritdoc />
public override bool Equals(MatchRank other)
=> other >= MatchRank.Compatible;

#endregion


#region Implementation

private MatchRank MatchContract(Type contractType, string? contractName)
{
Expand All @@ -87,23 +119,6 @@ private MatchRank MatchContract(Type contractType, string? contractName)
return MatchRank.NoMatch;
}


public MatchRank RankMatch(ParameterInfo member, Type contractType, string? contractName)
=> null != Target && member.Member.DeclaringType != Target
? MatchRank.NoMatch
: MatchContract(contractType, contractName);

public MatchRank RankMatch(FieldInfo field, Type contractType, string? contractName)
=> null != Target && field.DeclaringType != Target
? MatchRank.NoMatch
: MatchContract(contractType, contractName);

public MatchRank RankMatch(PropertyInfo property, Type contractType, string? contractName)
=> null != Target && property.DeclaringType != Target
? MatchRank.NoMatch
: MatchContract(contractType, contractName);


#endregion
}

Expand Down
2 changes: 1 addition & 1 deletion src/Resolution/Overrides/Members/FieldOverride.cs
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,7 @@ public class FieldOverride : ResolverOverride,
/// <param name="value">InjectionParameterValue to use for the Field.</param>
public FieldOverride(string name, object? value)
: base(name ?? throw new ArgumentNullException(nameof(name), "Must provide a name of the field to override"),
value, MatchRank.ExactMatch)
value)
{
}

Expand Down
2 changes: 1 addition & 1 deletion src/Resolution/Overrides/Members/PropertyOverride.cs
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,7 @@ public class PropertyOverride : ResolverOverride,
/// <param name="value">InjectionParameterValue to use for the property.</param>
public PropertyOverride(string name, object? value)
: base(name ?? throw new ArgumentNullException(nameof(name), "Must provide a name of the property to override"),
value, MatchRank.ExactMatch)
value)
{
}

Expand Down
13 changes: 7 additions & 6 deletions src/Resolution/Overrides/Parameters/ParameterOverride.cs
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@ namespace Unity.Resolution;
/// A <see cref="ResolverOverride"/> class that lets you
/// override a named parameter passed to a constructor.
/// </summary>
public class ParameterOverride : ResolverOverride,
public class ParameterOverride : ResolverOverride,
IMatchInfo<ParameterInfo>
{
#region Fields
Expand All @@ -29,7 +29,7 @@ public class ParameterOverride : ResolverOverride,
/// <param name="name">Name of the constructor parameter.</param>
/// <param name="value">InjectionParameterValue to pass for the constructor.</param>
public ParameterOverride(string name, object? value)
: base(name, value, MatchRank.ExactMatch)
: base(name, value)
{
}

Expand All @@ -41,7 +41,7 @@ public ParameterOverride(string name, object? value)
/// <param name="type">Type of the parameter.</param>
/// <param name="value">Value to pass for the MethodBase.</param>
public ParameterOverride(Type type, object? value)
: base(null, value, MatchRank.ExactMatch)
: base(null, value)
=> Type = type;

/// <summary>
Expand All @@ -53,7 +53,7 @@ public ParameterOverride(Type type, object? value)
/// <param name="name">Name of the parameter.</param>
/// <param name="value">Value to pass for the MethodBase.</param>
public ParameterOverride(string? name, Type type, object? value)
: base(name, value, MatchRank.ExactMatch)
: base(name, value)
=> Type = type;

/// <summary>
Expand All @@ -65,14 +65,15 @@ public ParameterOverride(string? name, Type type, object? value)
/// <param name="parameterName">Name of the constructor parameter.</param>
/// <param name="value">Value to pass for the MethodBase.</param>
public ParameterOverride(Type parameterType, string parameterName, object value)
: base(null, parameterName, value, MatchRank.ExactMatch)
: base(null, parameterName, value)
=> Type = parameterType;

#endregion


#region Match
#region IMatchInfo<ParameterInfo>

/// <inheritdoc />
public MatchRank RankMatch(ParameterInfo other)
{
return (Target is null || other.Member.DeclaringType == Target) &&
Expand Down
16 changes: 9 additions & 7 deletions src/Resolution/Overrides/ResolverOverride.cs
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,6 @@ public abstract class ResolverOverride : IEquatable<MatchRank>,
protected Type? Target;
protected readonly string? Name;
protected readonly object? Value;
private readonly MatchRank _rank;

#endregion

Expand All @@ -29,11 +28,10 @@ public abstract class ResolverOverride : IEquatable<MatchRank>,
/// <param name="name">Name of the dependency</param>
/// <param name="value">Value to pass to resolver</param>
/// <param name="rank">Minimal required rank to override</param>
protected ResolverOverride(string? name, object? value, MatchRank rank)
protected ResolverOverride(string? name, object? value)
{
Name = name;
Value = value;
_rank = rank;
}

/// <summary>
Expand All @@ -43,12 +41,11 @@ protected ResolverOverride(string? name, object? value, MatchRank rank)
/// <param name="name">Name of the dependency</param>
/// <param name="value">Value to pass to resolver</param>
/// <param name="rank">Minimal required rank to override</param>
protected ResolverOverride(Type? target, string? name, object? value, MatchRank rank)
protected ResolverOverride(Type? target, string? name, object? value)
{
Name = name;
Value = value;
Target = target;
_rank = rank;
}

#endregion
Expand Down Expand Up @@ -87,8 +84,13 @@ public ResolverOverride OnType(Type targetType)

#region IEquatable<MatchRank>

public bool Equals(MatchRank other)
=> other >= _rank;
/// <summary>
/// Determines if provided rank is adequate to be a match
/// </summary>
/// <param name="other">The rank to compare</param>
/// <returns></returns>
public virtual bool Equals(MatchRank other)
=> other >= MatchRank.ExactMatch;

#endregion

Expand Down

0 comments on commit 48b0cf2

Please sign in to comment.