Struct ValueFunc<TResult>
Represents a pointer to parameterless method with return type.
Inherited Members
Namespace: DotNext
Assembly: DotNext.dll
Syntax
public struct ValueFunc<TResult> : IValueDelegate<Func<TResult>>, ICallable<Func<TResult>>, ICallable, IConvertible<Func<TResult>>, ISupplier<Func<TResult>>, IEquatable<ValueFunc<TResult>>, ISupplier<TResult>
Type Parameters
| Name | Description |
|---|---|
| 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 SourceValueFunc(Func<TResult>, Boolean)
Initializes a new pointer based on extracted pointer from the delegate.
Declaration
public ValueFunc(Func<TResult> func, bool wrap = false)
Parameters
| Type | Name | Description |
|---|---|---|
| Func<TResult> | 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.
Exceptions
| Type | Condition |
|---|---|
| ArgumentNullException |
|
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 |
|
| ArgumentException | Signature of |
Properties
| Improve this Doc View SourceActivator
Returns activator for type TResult in the form of typed method pointer.
Declaration
public static ValueFunc<TResult> Activator { get; }
Property Value
| Type | Description |
|---|---|
| ValueFunc<TResult> |
Remarks
Actual type TResult should be a value type or have public parameterless constructor.
DefaultValueProvider
Obtains pointer to the method that returns null if TResult
is reference type or initialized value type if TResult is value type.
Declaration
public static ValueFunc<TResult> DefaultValueProvider { get; }
Property Value
| Type | Description |
|---|---|
| ValueFunc<TResult> |
IsEmpty
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<TResult>)
Determines whether this object points to the same method as other object.
Declaration
public bool Equals(ValueFunc<TResult> other)
Parameters
| Type | Name | Description |
|---|---|---|
| ValueFunc<TResult> | 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<TDelegate> to compare. |
Returns
| Type | Description |
|---|---|
| Boolean | true if both pointers represent the same method; otherwise, false. |
Overrides
| Improve this Doc View SourceGetHashCode()
Computes hash code of this pointer.
Declaration
public override int GetHashCode()
Returns
| Type | Description |
|---|---|
| Int32 | The hash code of this pointer. |
Overrides
| Improve this Doc View SourceInvoke()
Invokes method by pointer.
Declaration
public TResult Invoke()
Returns
| Type | Description |
|---|---|
| TResult | The result of method invocation. |
ToDelegate()
Converts this pointer into Func<TResult>.
Declaration
public Func<TResult> ToDelegate()
Returns
| Type | Description |
|---|---|
| Func<TResult> | 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. |
Overrides
Operators
| Improve this Doc View SourceEquality(ValueFunc<TResult>, ValueFunc<TResult>)
Determines whether the pointers represent the same method.
Declaration
public static bool operator ==(in ValueFunc<TResult> first, in ValueFunc<TResult> second)
Parameters
| Type | Name | Description |
|---|---|---|
| ValueFunc<TResult> | first | The first pointer to compare. |
| ValueFunc<TResult> | second | The second pointer to compare. |
Returns
| Type | Description |
|---|---|
| Boolean | true if both pointers represent the same method; otherwise, false. |
Explicit(ValueFunc<TResult> to Func<TResult>)
Converts this pointer into Func<TResult>.
Declaration
public static explicit operator Func<TResult>(in ValueFunc<TResult> pointer)
Parameters
| Type | Name | Description |
|---|---|---|
| ValueFunc<TResult> | pointer | The pointer to convert. |
Returns
| Type | Description |
|---|---|
| Func<TResult> | The delegate created from this method pointer. |
Inequality(ValueFunc<TResult>, ValueFunc<TResult>)
Determines whether the pointers represent different methods.
Declaration
public static bool operator !=(in ValueFunc<TResult> first, in ValueFunc<TResult> second)
Parameters
| Type | Name | Description |
|---|---|---|
| ValueFunc<TResult> | first | The first pointer to compare. |
| ValueFunc<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 SourceICallable.DynamicInvoke(Object[])
Declaration
object ICallable.DynamicInvoke(params object[] args)
Parameters
| Type | Name | Description |
|---|---|---|
| Object[] | args |
Returns
| Type | Description |
|---|---|
| Object |