Show / Hide Table of Contents

Class MemoizingEvaluatorFactory

Factory for member invocation delegates with support to cache compiled delegates.

Inheritance
System.Object
DefaultEvaluatorFactory
MemoizingEvaluatorFactory
Implements
IEvaluatorFactory
Inherited Members
DefaultEvaluatorFactory.GetEvaluator(MethodInfo)
DefaultEvaluatorFactory.GetEvaluator(PropertyInfo)
DefaultEvaluatorFactory.GetEvaluator(FieldInfo)
DefaultEvaluatorFactory.GetEvaluator(ConstructorInfo)
DefaultEvaluatorFactory.GetEvaluator(Type)
DefaultEvaluatorFactory.GetEvaluator(Expression, ParameterExpression[])
DefaultEvaluatorFactory.GetEvaluator(Expression)
DefaultEvaluatorFactory.GetEvaluator(UnaryExpression)
DefaultEvaluatorFactory.GetEvaluator(BinaryExpression)
Namespace: System.Linq.Expressions
Assembly: Nuqleon.Linq.Expressions.Optimizers.dll
Syntax
public class MemoizingEvaluatorFactory : DefaultEvaluatorFactory, IEvaluatorFactory

Constructors

MemoizingEvaluatorFactory(IMemoizer)

Creates a new evaluator factory using the specified memoizer to cache the compiled delegates created by ShouldCache(MemberInfo). Note that the member objects and the evaluator delegates can be held alive by the cache created through the memoizer. See other constructor overloads for alternative options, if needed.

Declaration
public MemoizingEvaluatorFactory(IMemoizer memoizer)
Parameters
Type Name Description
IMemoizer memoizer

The memoizer to use for caching GetEvaluator(MemberInfo) calls.

MemoizingEvaluatorFactory(IWeakMemoizer)

Creates a new evaluator factory using the specified memoizer to cache the compiled delegates created by ShouldCache(MemberInfo). A weak memoizer is used which can help to prevent the cache from keeping member objects and evaluator delegates alive.

Declaration
public MemoizingEvaluatorFactory(IWeakMemoizer memoizer)
Parameters
Type Name Description
IWeakMemoizer memoizer

The memoizer to use for caching GetEvaluator(MemberInfo) calls.

Properties

GetEvaluatorMemberCache

Gets the underlying cache used for the memoized GetEvaluator(MemberInfo) method.

Declaration
public IMemoizationCache GetEvaluatorMemberCache { get; }
Property Value
Type Description
IMemoizationCache

Methods

GetEvaluator(MemberInfo)

Gets an evaluator delegate for the specified member.

Declaration
public override Delegate GetEvaluator(MemberInfo member)
Parameters
Type Name Description
System.Reflection.MemberInfo member

The member to get an evaluator delegate for.

Returns
Type Description
System.Delegate

An evaluator delegate for the specified member.

Overrides
DefaultEvaluatorFactory.GetEvaluator(MemberInfo)

ShouldCache(MemberInfo)

Checks whether an evaluator delegate for the specified member should be cached.

Declaration
public virtual bool ShouldCache(MemberInfo member)
Parameters
Type Name Description
System.Reflection.MemberInfo member

The member to check.

Returns
Type Description
System.Boolean

true if the evaluator delegate should be cached; otherwise, false.

Remarks

This method enables derived classes to have a more fine-grained control over caching, for example to suppress caching of generic members which may cause to unbounded cache growth.

Implements

IEvaluatorFactory
In This Article
Back to top Generated by DocFX