Show / Hide Table of Contents

Struct ValueFunc<T1, T2, TResult>

Represents a pointer to the method with two parameters and return type.

Implements
ICallable<Func<T1, T2, TResult>>
ICallable
IConvertible<Func<T1, T2, TResult>>
IEquatable<ValueFunc<T1, T2, TResult>>
Inherited Members
Object.Equals(Object, Object)
Object.GetType()
Object.ReferenceEquals(Object, Object)
Namespace: DotNext
Assembly: DotNext.dll
Syntax
public struct ValueFunc<T1, T2, TResult> : IValueDelegate<Func<T1, T2, TResult>>, ICallable<Func<T1, T2, TResult>>, ICallable, IConvertible<Func<T1, T2, TResult>>, ISupplier<Func<T1, T2, TResult>>, IEquatable<ValueFunc<T1, T2, TResult>>, ISupplier<T1, T2, TResult>
Type Parameters
Name Description
T1

The type of the first method parameter.

T2

The type of the second method parameter.

TResult

The type of the return value of the method that this pointer encapsulates.

Remarks

This method pointer is intended to call managed methods only.

Constructors

| Improve this Doc View Source

ValueFunc(Func<T1, T2, TResult>, Boolean)

Initializes a new pointer based on extracted pointer from the delegate.

Declaration
public ValueFunc(Func<T1, T2, TResult> func, bool wrap = false)
Parameters
Type Name Description
Func<T1, T2, TResult> func

The delegate representing method.

Boolean wrap

true to wrap func into this delegate; false to extract method pointer without holding reference to the passed delegate.

Remarks

You can use this constructor to create value delegate once and cache it using static readonly field for subsequent calls.

Exceptions
Type Condition
ArgumentNullException

func is null.

| Improve this Doc View Source

ValueFunc(MethodInfo)

Initializes a new pointer to the method.

Declaration
public ValueFunc(MethodInfo method)
Parameters
Type Name Description
MethodInfo method

The method to convert into pointer.

Remarks

This constructor causes heap allocations because Reflection is needed to check compatibility of method's signature with the delegate type.

Exceptions
Type Condition
ArgumentNullException

method is null.

ArgumentException

Signature of method doesn't match to this pointer type.

Properties

| Improve this Doc View Source

IsEmpty

Indicates that this delegate doesn't refer to any method.

Declaration
public bool IsEmpty { get; }
Property Value
Type Description
Boolean
| Improve this Doc View Source

Target

Gets the object on which the current pointer invokes the method.

Declaration
public object Target { get; }
Property Value
Type Description
Object

Methods

| Improve this Doc View Source

Equals(ValueFunc<T1, T2, TResult>)

Determines whether this object points to the same method as other object.

Declaration
public bool Equals(ValueFunc<T1, T2, TResult> other)
Parameters
Type Name Description
ValueFunc<T1, T2, TResult> other

The pointer to compare.

Returns
Type Description
Boolean

true if both pointers represent the same method; otherwise, false.

| Improve this Doc View Source

Equals(Object)

Determines whether this object points to the same method as other object.

Declaration
public override bool Equals(object other)
Parameters
Type Name Description
Object other

The object implementing ICallable<TDelegate> to compare.

Returns
Type Description
Boolean

true if both pointers represent the same method; otherwise, false.

Overrides
ValueType.Equals(Object)
| Improve this Doc View Source

GetHashCode()

Computes hash code of this pointer.

Declaration
public override int GetHashCode()
Returns
Type Description
Int32

The hash code of this pointer.

Overrides
ValueType.GetHashCode()
| Improve this Doc View Source

Invoke(T1, T2)

Invokes method by pointer.

Declaration
public TResult Invoke(T1 arg1, T2 arg2)
Parameters
Type Name Description
T1 arg1

The first argument to be passed into the target method.

T2 arg2

The second argument to be passed into the target method.

Returns
Type Description
TResult

The result of method invocation.

| Improve this Doc View Source

ToDelegate()

Converts this pointer into Func<T1,T2,TResult>.

Declaration
public Func<T1, T2, TResult> ToDelegate()
Returns
Type Description
Func<T1, T2, TResult>

The delegate created from this method pointer; or null if this pointer is zero.

| Improve this Doc View Source

ToString()

Obtains pointer value in HEX format.

Declaration
public override string ToString()
Returns
Type Description
String

The address represented by pointer.

Overrides
ValueType.ToString()

Operators

| Improve this Doc View Source

Equality(ValueFunc<T1, T2, TResult>, ValueFunc<T1, T2, TResult>)

Determines whether the pointers represent the same method.

Declaration
public static bool operator ==(in ValueFunc<T1, T2, TResult> first, in ValueFunc<T1, T2, TResult> second)
Parameters
Type Name Description
ValueFunc<T1, T2, TResult> first

The first pointer to compare.

ValueFunc<T1, T2, TResult> second

The second pointer to compare.

Returns
Type Description
Boolean

true if both pointers represent the same method; otherwise, false.

| Improve this Doc View Source

Explicit(ValueFunc<T1, T2, TResult> to Func<T1, T2, TResult>)

Converts this pointer into Func<T1,T2,TResult>.

Declaration
public static explicit operator Func<T1, T2, TResult>(in ValueFunc<T1, T2, TResult> pointer)
Parameters
Type Name Description
ValueFunc<T1, T2, TResult> pointer

The pointer to convert.

Returns
Type Description
Func<T1, T2, TResult>

The delegate created from this method pointer.

| Improve this Doc View Source

Inequality(ValueFunc<T1, T2, TResult>, ValueFunc<T1, T2, TResult>)

Determines whether the pointers represent different methods.

Declaration
public static bool operator !=(in ValueFunc<T1, T2, TResult> first, in ValueFunc<T1, T2, TResult> second)
Parameters
Type Name Description
ValueFunc<T1, T2, TResult> first

The first pointer to compare.

ValueFunc<T1, T2, TResult> second

The second pointer to compare.

Returns
Type Description
Boolean

true if both pointers represent different methods; otherwise, false.

Explicit Interface Implementations

| Improve this Doc View Source

ICallable.DynamicInvoke(Object[])

Declaration
object ICallable.DynamicInvoke(params object[] args)
Parameters
Type Name Description
Object[] args
Returns
Type Description
Object

Implements

ICallable<TDelegate>
ICallable
IConvertible<T>
System.IEquatable<T>

Extension Methods

ValueTypeExtensions.IsOneOf<T>(T, IEnumerable<T>)
ValueTypeExtensions.IsOneOf<T>(T, T[])
Sequence.Skip<TEnumerator, T>(ref TEnumerator, Int32)
ExpressionBuilder.Const<T>(T)
  • Improve this Doc
  • View Source
In This Article
Back to top Generated by DocFX