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 |