Show / Hide Table of Contents

Class AwaitExpression

Represents suspension point in the execution of the lambda function until the awaited task completes.

Inheritance
object
Expression
CustomExpression
AwaitExpression
Inherited Members
CustomExpression.NodeType
CustomExpression.CanReduce
Expression.Assign(Expression, Expression)
Expression.MakeBinary(ExpressionType, Expression, Expression)
Expression.MakeBinary(ExpressionType, Expression, Expression, bool, MethodInfo)
Expression.MakeBinary(ExpressionType, Expression, Expression, bool, MethodInfo, LambdaExpression)
Expression.Equal(Expression, Expression)
Expression.Equal(Expression, Expression, bool, MethodInfo)
Expression.ReferenceEqual(Expression, Expression)
Expression.NotEqual(Expression, Expression)
Expression.NotEqual(Expression, Expression, bool, MethodInfo)
Expression.ReferenceNotEqual(Expression, Expression)
Expression.GreaterThan(Expression, Expression)
Expression.GreaterThan(Expression, Expression, bool, MethodInfo)
Expression.LessThan(Expression, Expression)
Expression.LessThan(Expression, Expression, bool, MethodInfo)
Expression.GreaterThanOrEqual(Expression, Expression)
Expression.GreaterThanOrEqual(Expression, Expression, bool, MethodInfo)
Expression.LessThanOrEqual(Expression, Expression)
Expression.LessThanOrEqual(Expression, Expression, bool, MethodInfo)
Expression.AndAlso(Expression, Expression)
Expression.AndAlso(Expression, Expression, MethodInfo)
Expression.OrElse(Expression, Expression)
Expression.OrElse(Expression, Expression, MethodInfo)
Expression.Coalesce(Expression, Expression)
Expression.Coalesce(Expression, Expression, LambdaExpression)
Expression.Add(Expression, Expression)
Expression.Add(Expression, Expression, MethodInfo)
Expression.AddAssign(Expression, Expression)
Expression.AddAssign(Expression, Expression, MethodInfo)
Expression.AddAssign(Expression, Expression, MethodInfo, LambdaExpression)
Expression.AddAssignChecked(Expression, Expression)
Expression.AddAssignChecked(Expression, Expression, MethodInfo)
Expression.AddAssignChecked(Expression, Expression, MethodInfo, LambdaExpression)
Expression.AddChecked(Expression, Expression)
Expression.AddChecked(Expression, Expression, MethodInfo)
Expression.Subtract(Expression, Expression)
Expression.Subtract(Expression, Expression, MethodInfo)
Expression.SubtractAssign(Expression, Expression)
Expression.SubtractAssign(Expression, Expression, MethodInfo)
Expression.SubtractAssign(Expression, Expression, MethodInfo, LambdaExpression)
Expression.SubtractAssignChecked(Expression, Expression)
Expression.SubtractAssignChecked(Expression, Expression, MethodInfo)
Expression.SubtractAssignChecked(Expression, Expression, MethodInfo, LambdaExpression)
Expression.SubtractChecked(Expression, Expression)
Expression.SubtractChecked(Expression, Expression, MethodInfo)
Expression.Divide(Expression, Expression)
Expression.Divide(Expression, Expression, MethodInfo)
Expression.DivideAssign(Expression, Expression)
Expression.DivideAssign(Expression, Expression, MethodInfo)
Expression.DivideAssign(Expression, Expression, MethodInfo, LambdaExpression)
Expression.Modulo(Expression, Expression)
Expression.Modulo(Expression, Expression, MethodInfo)
Expression.ModuloAssign(Expression, Expression)
Expression.ModuloAssign(Expression, Expression, MethodInfo)
Expression.ModuloAssign(Expression, Expression, MethodInfo, LambdaExpression)
Expression.Multiply(Expression, Expression)
Expression.Multiply(Expression, Expression, MethodInfo)
Expression.MultiplyAssign(Expression, Expression)
Expression.MultiplyAssign(Expression, Expression, MethodInfo)
Expression.MultiplyAssign(Expression, Expression, MethodInfo, LambdaExpression)
Expression.MultiplyAssignChecked(Expression, Expression)
Expression.MultiplyAssignChecked(Expression, Expression, MethodInfo)
Expression.MultiplyAssignChecked(Expression, Expression, MethodInfo, LambdaExpression)
Expression.MultiplyChecked(Expression, Expression)
Expression.MultiplyChecked(Expression, Expression, MethodInfo)
Expression.LeftShift(Expression, Expression)
Expression.LeftShift(Expression, Expression, MethodInfo)
Expression.LeftShiftAssign(Expression, Expression)
Expression.LeftShiftAssign(Expression, Expression, MethodInfo)
Expression.LeftShiftAssign(Expression, Expression, MethodInfo, LambdaExpression)
Expression.RightShift(Expression, Expression)
Expression.RightShift(Expression, Expression, MethodInfo)
Expression.RightShiftAssign(Expression, Expression)
Expression.RightShiftAssign(Expression, Expression, MethodInfo)
Expression.RightShiftAssign(Expression, Expression, MethodInfo, LambdaExpression)
Expression.And(Expression, Expression)
Expression.And(Expression, Expression, MethodInfo)
Expression.AndAssign(Expression, Expression)
Expression.AndAssign(Expression, Expression, MethodInfo)
Expression.AndAssign(Expression, Expression, MethodInfo, LambdaExpression)
Expression.Or(Expression, Expression)
Expression.Or(Expression, Expression, MethodInfo)
Expression.OrAssign(Expression, Expression)
Expression.OrAssign(Expression, Expression, MethodInfo)
Expression.OrAssign(Expression, Expression, MethodInfo, LambdaExpression)
Expression.ExclusiveOr(Expression, Expression)
Expression.ExclusiveOr(Expression, Expression, MethodInfo)
Expression.ExclusiveOrAssign(Expression, Expression)
Expression.ExclusiveOrAssign(Expression, Expression, MethodInfo)
Expression.ExclusiveOrAssign(Expression, Expression, MethodInfo, LambdaExpression)
Expression.Power(Expression, Expression)
Expression.Power(Expression, Expression, MethodInfo)
Expression.PowerAssign(Expression, Expression)
Expression.PowerAssign(Expression, Expression, MethodInfo)
Expression.PowerAssign(Expression, Expression, MethodInfo, LambdaExpression)
Expression.ArrayIndex(Expression, Expression)
Expression.Block(Expression, Expression)
Expression.Block(Expression, Expression, Expression)
Expression.Block(Expression, Expression, Expression, Expression)
Expression.Block(Expression, Expression, Expression, Expression, Expression)
Expression.Block(params Expression[])
Expression.Block(IEnumerable<Expression>)
Expression.Block(Type, params Expression[])
Expression.Block(Type, IEnumerable<Expression>)
Expression.Block(IEnumerable<ParameterExpression>, params Expression[])
Expression.Block(Type, IEnumerable<ParameterExpression>, params Expression[])
Expression.Block(IEnumerable<ParameterExpression>, IEnumerable<Expression>)
Expression.Block(Type, IEnumerable<ParameterExpression>, IEnumerable<Expression>)
Expression.Catch(Type, Expression)
Expression.Catch(ParameterExpression, Expression)
Expression.Catch(Type, Expression, Expression)
Expression.Catch(ParameterExpression, Expression, Expression)
Expression.MakeCatchBlock(Type, ParameterExpression, Expression, Expression)
Expression.Condition(Expression, Expression, Expression)
Expression.Condition(Expression, Expression, Expression, Type)
Expression.IfThen(Expression, Expression)
Expression.IfThenElse(Expression, Expression, Expression)
Expression.Constant(object)
Expression.Constant(object, Type)
Expression.DebugInfo(SymbolDocumentInfo, int, int, int, int)
Expression.ClearDebugInfo(SymbolDocumentInfo)
Expression.Empty()
Expression.Default(Type)
Expression.ElementInit(MethodInfo, params Expression[])
Expression.ElementInit(MethodInfo, IEnumerable<Expression>)
Expression.ReduceAndCheck()
Expression.ReduceExtensions()
Expression.ToString()
Expression.Dynamic(CallSiteBinder, Type, IEnumerable<Expression>)
Expression.Dynamic(CallSiteBinder, Type, Expression)
Expression.Dynamic(CallSiteBinder, Type, Expression, Expression)
Expression.Dynamic(CallSiteBinder, Type, Expression, Expression, Expression)
Expression.Dynamic(CallSiteBinder, Type, Expression, Expression, Expression, Expression)
Expression.Dynamic(CallSiteBinder, Type, params Expression[])
Expression.MakeDynamic(Type, CallSiteBinder, IEnumerable<Expression>)
Expression.MakeDynamic(Type, CallSiteBinder, Expression)
Expression.MakeDynamic(Type, CallSiteBinder, Expression, Expression)
Expression.MakeDynamic(Type, CallSiteBinder, Expression, Expression, Expression)
Expression.MakeDynamic(Type, CallSiteBinder, Expression, Expression, Expression, Expression)
Expression.MakeDynamic(Type, CallSiteBinder, params Expression[])
Expression.Break(LabelTarget)
Expression.Break(LabelTarget, Expression)
Expression.Break(LabelTarget, Type)
Expression.Break(LabelTarget, Expression, Type)
Expression.Continue(LabelTarget)
Expression.Continue(LabelTarget, Type)
Expression.Return(LabelTarget)
Expression.Return(LabelTarget, Type)
Expression.Return(LabelTarget, Expression)
Expression.Return(LabelTarget, Expression, Type)
Expression.Goto(LabelTarget)
Expression.Goto(LabelTarget, Type)
Expression.Goto(LabelTarget, Expression)
Expression.Goto(LabelTarget, Expression, Type)
Expression.MakeGoto(GotoExpressionKind, LabelTarget, Expression, Type)
Expression.MakeIndex(Expression, PropertyInfo, IEnumerable<Expression>)
Expression.ArrayAccess(Expression, params Expression[])
Expression.ArrayAccess(Expression, IEnumerable<Expression>)
Expression.Property(Expression, string, params Expression[])
Expression.Property(Expression, PropertyInfo, params Expression[])
Expression.Property(Expression, PropertyInfo, IEnumerable<Expression>)
Expression.Invoke(Expression, params Expression[])
Expression.Invoke(Expression, IEnumerable<Expression>)
Expression.Label(LabelTarget)
Expression.Label(LabelTarget, Expression)
Expression.Label()
Expression.Label(string)
Expression.Label(Type)
Expression.Label(Type, string)
Expression.Lambda<TDelegate>(Expression, params ParameterExpression[])
Expression.Lambda<TDelegate>(Expression, bool, params ParameterExpression[])
Expression.Lambda<TDelegate>(Expression, IEnumerable<ParameterExpression>)
Expression.Lambda<TDelegate>(Expression, bool, IEnumerable<ParameterExpression>)
Expression.Lambda<TDelegate>(Expression, string, IEnumerable<ParameterExpression>)
Expression.Lambda<TDelegate>(Expression, string, bool, IEnumerable<ParameterExpression>)
Expression.Lambda(Expression, params ParameterExpression[])
Expression.Lambda(Expression, bool, params ParameterExpression[])
Expression.Lambda(Expression, IEnumerable<ParameterExpression>)
Expression.Lambda(Expression, bool, IEnumerable<ParameterExpression>)
Expression.Lambda(Type, Expression, params ParameterExpression[])
Expression.Lambda(Type, Expression, bool, params ParameterExpression[])
Expression.Lambda(Type, Expression, IEnumerable<ParameterExpression>)
Expression.Lambda(Type, Expression, bool, IEnumerable<ParameterExpression>)
Expression.Lambda(Expression, string, IEnumerable<ParameterExpression>)
Expression.Lambda(Expression, string, bool, IEnumerable<ParameterExpression>)
Expression.Lambda(Type, Expression, string, IEnumerable<ParameterExpression>)
Expression.Lambda(Type, Expression, string, bool, IEnumerable<ParameterExpression>)
Expression.GetFuncType(params Type[])
Expression.TryGetFuncType(Type[], out Type)
Expression.GetActionType(params Type[])
Expression.TryGetActionType(Type[], out Type)
Expression.GetDelegateType(params Type[])
Expression.ListInit(NewExpression, params Expression[])
Expression.ListInit(NewExpression, IEnumerable<Expression>)
Expression.ListInit(NewExpression, MethodInfo, params Expression[])
Expression.ListInit(NewExpression, MethodInfo, IEnumerable<Expression>)
Expression.ListInit(NewExpression, params ElementInit[])
Expression.ListInit(NewExpression, IEnumerable<ElementInit>)
Expression.Loop(Expression)
Expression.Loop(Expression, LabelTarget)
Expression.Loop(Expression, LabelTarget, LabelTarget)
Expression.Bind(MemberInfo, Expression)
Expression.Bind(MethodInfo, Expression)
Expression.Field(Expression, FieldInfo)
Expression.Field(Expression, string)
Expression.Field(Expression, Type, string)
Expression.Property(Expression, string)
Expression.Property(Expression, Type, string)
Expression.Property(Expression, PropertyInfo)
Expression.Property(Expression, MethodInfo)
Expression.PropertyOrField(Expression, string)
Expression.MakeMemberAccess(Expression, MemberInfo)
Expression.MemberInit(NewExpression, params MemberBinding[])
Expression.MemberInit(NewExpression, IEnumerable<MemberBinding>)
Expression.ListBind(MemberInfo, params ElementInit[])
Expression.ListBind(MemberInfo, IEnumerable<ElementInit>)
Expression.ListBind(MethodInfo, params ElementInit[])
Expression.ListBind(MethodInfo, IEnumerable<ElementInit>)
Expression.MemberBind(MemberInfo, params MemberBinding[])
Expression.MemberBind(MemberInfo, IEnumerable<MemberBinding>)
Expression.MemberBind(MethodInfo, params MemberBinding[])
Expression.MemberBind(MethodInfo, IEnumerable<MemberBinding>)
Expression.Call(MethodInfo, Expression)
Expression.Call(MethodInfo, Expression, Expression)
Expression.Call(MethodInfo, Expression, Expression, Expression)
Expression.Call(MethodInfo, Expression, Expression, Expression, Expression)
Expression.Call(MethodInfo, Expression, Expression, Expression, Expression, Expression)
Expression.Call(MethodInfo, params Expression[])
Expression.Call(MethodInfo, IEnumerable<Expression>)
Expression.Call(Expression, MethodInfo)
Expression.Call(Expression, MethodInfo, params Expression[])
Expression.Call(Expression, MethodInfo, Expression, Expression)
Expression.Call(Expression, MethodInfo, Expression, Expression, Expression)
Expression.Call(Expression, string, Type[], params Expression[])
Expression.Call(Type, string, Type[], params Expression[])
Expression.Call(Expression, MethodInfo, IEnumerable<Expression>)
Expression.ArrayIndex(Expression, params Expression[])
Expression.ArrayIndex(Expression, IEnumerable<Expression>)
Expression.NewArrayInit(Type, params Expression[])
Expression.NewArrayInit(Type, IEnumerable<Expression>)
Expression.NewArrayBounds(Type, params Expression[])
Expression.NewArrayBounds(Type, IEnumerable<Expression>)
Expression.New(ConstructorInfo)
Expression.New(ConstructorInfo, params Expression[])
Expression.New(ConstructorInfo, IEnumerable<Expression>)
Expression.New(ConstructorInfo, IEnumerable<Expression>, IEnumerable<MemberInfo>)
Expression.New(ConstructorInfo, IEnumerable<Expression>, params MemberInfo[])
Expression.New(Type)
Expression.Parameter(Type)
Expression.Variable(Type)
Expression.Parameter(Type, string)
Expression.Variable(Type, string)
Expression.RuntimeVariables(params ParameterExpression[])
Expression.RuntimeVariables(IEnumerable<ParameterExpression>)
Expression.SwitchCase(Expression, params Expression[])
Expression.SwitchCase(Expression, IEnumerable<Expression>)
Expression.Switch(Expression, params SwitchCase[])
Expression.Switch(Expression, Expression, params SwitchCase[])
Expression.Switch(Expression, Expression, MethodInfo, params SwitchCase[])
Expression.Switch(Type, Expression, Expression, MethodInfo, params SwitchCase[])
Expression.Switch(Expression, Expression, MethodInfo, IEnumerable<SwitchCase>)
Expression.Switch(Type, Expression, Expression, MethodInfo, IEnumerable<SwitchCase>)
Expression.SymbolDocument(string)
Expression.SymbolDocument(string, Guid)
Expression.SymbolDocument(string, Guid, Guid)
Expression.SymbolDocument(string, Guid, Guid, Guid)
Expression.TryFault(Expression, Expression)
Expression.TryFinally(Expression, Expression)
Expression.TryCatch(Expression, params CatchBlock[])
Expression.TryCatchFinally(Expression, Expression, params CatchBlock[])
Expression.MakeTry(Type, Expression, Expression, Expression, IEnumerable<CatchBlock>)
Expression.TypeIs(Expression, Type)
Expression.TypeEqual(Expression, Type)
Expression.MakeUnary(ExpressionType, Expression, Type)
Expression.MakeUnary(ExpressionType, Expression, Type, MethodInfo)
Expression.Negate(Expression)
Expression.Negate(Expression, MethodInfo)
Expression.UnaryPlus(Expression)
Expression.UnaryPlus(Expression, MethodInfo)
Expression.NegateChecked(Expression)
Expression.NegateChecked(Expression, MethodInfo)
Expression.Not(Expression)
Expression.Not(Expression, MethodInfo)
Expression.IsFalse(Expression)
Expression.IsFalse(Expression, MethodInfo)
Expression.IsTrue(Expression)
Expression.IsTrue(Expression, MethodInfo)
Expression.OnesComplement(Expression)
Expression.OnesComplement(Expression, MethodInfo)
Expression.TypeAs(Expression, Type)
Expression.Unbox(Expression, Type)
Expression.Convert(Expression, Type)
Expression.Convert(Expression, Type, MethodInfo)
Expression.ConvertChecked(Expression, Type)
Expression.ConvertChecked(Expression, Type, MethodInfo)
Expression.ArrayLength(Expression)
Expression.Quote(Expression)
Expression.Rethrow()
Expression.Rethrow(Type)
Expression.Throw(Expression)
Expression.Throw(Expression, Type)
Expression.Increment(Expression)
Expression.Increment(Expression, MethodInfo)
Expression.Decrement(Expression)
Expression.Decrement(Expression, MethodInfo)
Expression.PreIncrementAssign(Expression)
Expression.PreIncrementAssign(Expression, MethodInfo)
Expression.PreDecrementAssign(Expression)
Expression.PreDecrementAssign(Expression, MethodInfo)
Expression.PostIncrementAssign(Expression)
Expression.PostIncrementAssign(Expression, MethodInfo)
Expression.PostDecrementAssign(Expression)
Expression.PostDecrementAssign(Expression, MethodInfo)
object.GetType()
object.Equals(object)
object.Equals(object, object)
object.ReferenceEquals(object, object)
object.GetHashCode()
Namespace: DotNext.Linq.Expressions
Assembly: DotNext.Metaprogramming.dll
Syntax
public sealed class AwaitExpression : CustomExpression

Constructors

View Source

AwaitExpression(Expression, bool)

Constructs await expression.

Declaration
[DynamicDependency(DynamicallyAccessedMemberTypes.PublicMethods, typeof(Task))]
[DynamicDependency(DynamicallyAccessedMemberTypes.PublicMethods, typeof(Task<>))]
[DynamicDependency(DynamicallyAccessedMemberTypes.PublicMethods, typeof(ValueTask))]
[DynamicDependency(DynamicallyAccessedMemberTypes.PublicMethods, typeof(ValueTask<>))]
[DynamicDependency(DynamicallyAccessedMemberTypes.PublicMethods, typeof(TaskAwaiter))]
[DynamicDependency(DynamicallyAccessedMemberTypes.PublicMethods, typeof(TaskAwaiter<>))]
[DynamicDependency(DynamicallyAccessedMemberTypes.PublicMethods, typeof(ValueTaskAwaiter))]
[DynamicDependency(DynamicallyAccessedMemberTypes.PublicMethods, typeof(ValueTaskAwaiter<>))]
public AwaitExpression(Expression expression, bool configureAwait = false)
Parameters
Type Name Description
Expression expression

An expression providing asynchronous result in the form or Task or any other TAP pattern.

bool configureAwait

true to call ConfigureAwait(bool) with false argument.

Exceptions
Type Condition
ArgumentException

Passed expression doesn't implement TAP pattern.

Properties

View Source

Type

Gets result type of asynchronous operation.

Declaration
public override Type Type { get; }
Property Value
Type Description
Type
Overrides
Expression.Type

Methods

View Source

Reduce()

Translates this expression into predefined set of expressions using Lowering technique.

Declaration
public override Expression Reduce()
Returns
Type Description
Expression

Translated expression.

Overrides
CustomExpression.Reduce()
View Source

VisitChildren(ExpressionVisitor)

Visit children expressions.

Declaration
protected override AwaitExpression VisitChildren(ExpressionVisitor visitor)
Parameters
Type Name Description
ExpressionVisitor visitor

Expression visitor.

Returns
Type Description
AwaitExpression

Potentially modified expression if one of children expressions is modified during visit.

Overrides
Expression.VisitChildren(ExpressionVisitor)

Extension Methods

BasicExtensions.As<T>(T)
BasicExtensions.IsBetween<T, TLowerBound, TUpperBound>(T, TLowerBound, TUpperBound)
BasicExtensions.IsOneOf<T>(T, params ReadOnlySpan<T>)
ExpressionBuilder.AndAlso(Expression, Expression)
ExpressionBuilder.AsDynamic(Expression?)
ExpressionBuilder.AsResult(Expression)
ExpressionBuilder.AsString(Expression)
ExpressionBuilder.Await(Expression, bool)
ExpressionBuilder.Call(Expression, MethodInfo, params Expression[])
ExpressionBuilder.Call(Expression, string, params Expression[])
ExpressionBuilder.Call(Expression, Type, string, params Expression[])
ExpressionBuilder.Concat(Expression, params Expression[])
ExpressionBuilder.Condition(Expression, Expression?, Expression?, Type?)
ExpressionBuilder.Condition<TResult>(Expression, Expression, Expression)
ExpressionBuilder.Convert(Expression, Type)
ExpressionBuilder.Convert<T>(Expression)
ExpressionBuilder.ElementAt(Expression, ItemIndexExpression)
ExpressionBuilder.ElementAt(Expression, params Expression[])
ExpressionBuilder.Equal(Expression, Expression)
ExpressionBuilder.Field(Expression, FieldInfo)
ExpressionBuilder.Field(Expression, string)
ExpressionBuilder.Finally(Expression, Expression)
ExpressionBuilder.For(Expression, ForExpression.LoopBuilder.Condition, ForExpression.LoopBuilder.Iteration, ForExpression.LoopBuilder.Statement)
ExpressionBuilder.ForEach(Expression, ForEachExpression.Statement)
ExpressionBuilder.IfNotNull(Expression, Func<ParameterExpression, Expression>)
ExpressionBuilder.Index(Expression, bool)
ExpressionBuilder.InstanceOf(Expression, Type)
ExpressionBuilder.InstanceOf<T>(Expression)
ExpressionBuilder.Invoke(Expression, params Expression[])
ExpressionBuilder.Lock(Expression, LockExpression.Statement)
ExpressionBuilder.Loop(Expression)
ExpressionBuilder.Loop(Expression, LabelTarget)
ExpressionBuilder.Loop(Expression, LabelTarget, LabelTarget)
ExpressionBuilder.New(Expression, params Expression[])
ExpressionBuilder.NotEqual(Expression, Expression)
ExpressionBuilder.OrElse(Expression, Expression)
ExpressionBuilder.Power(Expression, Expression)
ExpressionBuilder.Property(Expression, PropertyInfo)
ExpressionBuilder.Property(Expression, PropertyInfo, Expression, params Expression[])
ExpressionBuilder.Property(Expression, string)
ExpressionBuilder.Property(Expression, string, Expression, params Expression[])
ExpressionBuilder.Property(Expression, Type, string)
ExpressionBuilder.Property(Expression, Type, string, Expression, params Expression[])
ExpressionBuilder.Slice(Expression, ItemIndexExpression?, ItemIndexExpression?)
ExpressionBuilder.Slice(Expression, Expression)
ExpressionBuilder.Throw(Expression, Type?)
ExpressionBuilder.TryConvert(Expression, Type)
ExpressionBuilder.TryConvert<T>(Expression)
ExpressionBuilder.Unbox(Expression, Type)
ExpressionBuilder.Unbox<T>(Expression)
ExpressionBuilder.Until(Expression, WhileExpression.Statement)
ExpressionBuilder.Using(Expression, UsingExpression.Statement)
ExpressionBuilder.While(Expression, WhileExpression.Statement)
ExpressionBuilder.With(Expression, MemberBindings)
ExpressionBuilder.With(Expression, WithExpression.Statement)

See Also

Await expression
  • View Source
☀
☾
In this article
Back to top
Supported by the .NET Foundation
☀
☾