Struct ValueFunc<T1, T2, R>
Represents a pointer to the method with two parameters and return type.
Namespace: DotNext
Assembly: DotNext.dll
Syntax
public struct ValueFunc<T1, T2, R> : ICallable<Func<T1, T2, R>>, ICallable, IEquatable<ValueFunc<T1, T2, R>>, ISupplier<T1, T2, R>Type Parameters
| Name | Description | 
|---|---|
| T1 | The type of the first method parameter. | 
| T2 | The type of the second method parameter. | 
| R | 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 SourceValueFunc(Func<T1, T2, R>, Boolean)
Initializes a new pointer based on extracted pointer from the delegate.
Declaration
public ValueFunc(Func<T1, T2, R> func, bool wrap = false)Parameters
| Type | Name | Description | 
|---|---|---|
| DotNext.Func<T1, T2, R> | func | The delegate representing method. | 
| Boolean | wrap | true to wrap  | 
Remarks
You can use this constructor to create value delegate once and cache it using static readonly field
for subsequent calls.
ValueFunc(IntPtr)
Initializes a new delegate using pointer to the static managed method.
Declaration
public ValueFunc(IntPtr methodPtr)Parameters
| Type | Name | Description | 
|---|---|---|
| IntPtr | methodPtr | The pointer to the static managed method. | 
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.
Properties
| Improve this Doc View SourceIsEmpty
Indicates that this delegate doesn't refer to any method.
Declaration
public bool IsEmpty { get; }Property Value
| Type | Description | 
|---|---|
| Boolean | 
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 SourceEquals(ValueFunc<T1, T2, R>)
Determines whether this object points to the same method as other object.
Declaration
public bool Equals(ValueFunc<T1, T2, R> other)Parameters
| Type | Name | Description | 
|---|---|---|
| ValueFunc<T1, T2, R> | other | The pointer to compare. | 
Returns
| Type | Description | 
|---|---|
| Boolean | true if both pointers represent the same method; otherwise, false. | 
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<D> to compare. | 
Returns
| Type | Description | 
|---|---|
| Boolean | true if both pointers represent the same method; otherwise, false. | 
GetHashCode()
Computes hash code of this pointer.
Declaration
public override int GetHashCode()Returns
| Type | Description | 
|---|---|
| Int32 | The hash code of this pointer. | 
Invoke(T1, T2)
Invokes method by pointer.
Declaration
public R 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 | 
|---|---|
| R | The result of method invocation. | 
ToDelegate()
Converts this pointer into 
Declaration
public Func<T1, T2, R> ToDelegate()Returns
| Type | Description | 
|---|---|
| DotNext.Func<T1, T2, R> | The delegate created from this method pointer; or null if this pointer is zero. | 
ToString()
Obtains pointer value in HEX format.
Declaration
public override string ToString()Returns
| Type | Description | 
|---|---|
| String | The address represented by pointer. | 
Operators
| Improve this Doc View SourceEquality(ValueFunc<T1, T2, R>, ValueFunc<T1, T2, R>)
Determines whether the pointers represent the same method.
Declaration
public static bool operator ==(in ValueFunc<T1, T2, R> first, in ValueFunc<T1, T2, R> second)Parameters
| Type | Name | Description | 
|---|---|---|
| ValueFunc<T1, T2, R> | first | The first pointer to compare. | 
| ValueFunc<T1, T2, R> | second | The second pointer to compare. | 
Returns
| Type | Description | 
|---|---|
| Boolean | true if both pointers represent the same method; otherwise, false. | 
Explicit(ValueFunc<T1, T2, R> to Func<T1, T2, R>)
Converts this pointer into 
Declaration
public static explicit operator Func<T1, T2, R>(in ValueFunc<T1, T2, R> pointer)Parameters
| Type | Name | Description | 
|---|---|---|
| ValueFunc<T1, T2, R> | pointer | The pointer to convert. | 
Returns
| Type | Description | 
|---|---|
| DotNext.Func<T1, T2, R> | The delegate created from this method pointer. | 
Inequality(ValueFunc<T1, T2, R>, ValueFunc<T1, T2, R>)
Determines whether the pointers represent different methods.
Declaration
public static bool operator !=(in ValueFunc<T1, T2, R> first, in ValueFunc<T1, T2, R> second)Parameters
| Type | Name | Description | 
|---|---|---|
| ValueFunc<T1, T2, R> | first | The first pointer to compare. | 
| ValueFunc<T1, T2, R> | 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 SourceICallable.DynamicInvoke(Object[])
Declaration
object ICallable.DynamicInvoke(params object[] args)Parameters
| Type | Name | Description | 
|---|---|---|
| Object[] | args | 
Returns
| Type | Description | 
|---|---|
| Object |