Class MemoizingEvaluatorFactory
Factory for member invocation delegates with support to cache compiled delegates.
Implements
Inherited Members
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 |
Overrides
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 |
|
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.