Fixed Diagnostics dependencies in other packages

This commit is contained in:
Sergio Pedri 2021-02-03 01:45:15 +01:00
Родитель 44a0fa0513
Коммит 90c6f40c44
22 изменённых файлов: 154 добавлений и 75 удалений

Просмотреть файл

@ -6,7 +6,6 @@
using System; using System;
using System.Numerics; using System.Numerics;
using Microsoft.Toolkit.Diagnostics;
using Windows.UI.Composition; using Windows.UI.Composition;
using Windows.UI.Xaml; using Windows.UI.Xaml;
using Windows.UI.Xaml.Media; using Windows.UI.Xaml.Media;
@ -605,7 +604,7 @@ namespace Microsoft.Toolkit.Uwp.UI.Animations
{ {
if (!Matrix4x4.Decompose(to, out Vector3 toScale, out Quaternion toRotation, out Vector3 toTranslation)) if (!Matrix4x4.Decompose(to, out Vector3 toScale, out Quaternion toRotation, out Vector3 toTranslation))
{ {
ThrowHelper.ThrowArgumentException("The destination matrix could not be decomposed"); ThrowThrowArgumentExceptionForToDecompose();
} }
Vector3? fromScale = null; Vector3? fromScale = null;
@ -616,7 +615,7 @@ namespace Microsoft.Toolkit.Uwp.UI.Animations
{ {
if (!Matrix4x4.Decompose(from.GetValueOrDefault(), out Vector3 scale3, out Quaternion rotation4, out Vector3 translation3)) if (!Matrix4x4.Decompose(from.GetValueOrDefault(), out Vector3 scale3, out Quaternion rotation4, out Vector3 translation3))
{ {
ThrowHelper.ThrowArgumentException("The initial matrix could not be decomposed"); ThrowThrowArgumentExceptionForFromDecompose();
} }
fromScale = scale3; fromScale = scale3;
@ -629,6 +628,9 @@ namespace Microsoft.Toolkit.Uwp.UI.Animations
Translation(toTranslation, fromTranslation, delay, duration, easingType, easingMode); Translation(toTranslation, fromTranslation, delay, duration, easingType, easingMode);
return this; return this;
static void ThrowThrowArgumentExceptionForToDecompose() => throw new ArgumentException("The destination matrix could not be decomposed");
static void ThrowThrowArgumentExceptionForFromDecompose() => throw new ArgumentException("The initial matrix could not be decomposed");
} }
/// <summary> /// <summary>

Просмотреть файл

@ -6,7 +6,6 @@ using System;
using System.Diagnostics.Contracts; using System.Diagnostics.Contracts;
using System.Numerics; using System.Numerics;
using System.Runtime.CompilerServices; using System.Runtime.CompilerServices;
using Microsoft.Toolkit.Diagnostics;
using Windows.Foundation; using Windows.Foundation;
using Windows.UI; using Windows.UI;
using Windows.UI.Composition; using Windows.UI.Composition;
@ -161,7 +160,7 @@ namespace Microsoft.Toolkit.Uwp.UI.Animations
easingFunction); easingFunction);
} }
return ThrowHelper.ThrowInvalidOperationException<CompositionAnimation>("Invalid animation type"); throw new InvalidOperationException("Invalid animation type");
} }
/// <inheritdoc/> /// <inheritdoc/>
@ -216,7 +215,7 @@ namespace Microsoft.Toolkit.Uwp.UI.Animations
easingFunction); easingFunction);
} }
return ThrowHelper.ThrowInvalidOperationException<Timeline>("Invalid animation type"); throw new InvalidOperationException("Invalid animation type");
} }
/// <summary> /// <summary>

Просмотреть файл

@ -4,7 +4,6 @@
using System; using System;
using System.Numerics; using System.Numerics;
using Microsoft.Toolkit.Diagnostics;
using Windows.UI; using Windows.UI;
using Windows.UI.Composition; using Windows.UI.Composition;
using Windows.UI.Xaml.Media.Animation; using Windows.UI.Xaml.Media.Animation;
@ -231,7 +230,7 @@ namespace Microsoft.Toolkit.Uwp.UI.Animations
} }
else else
{ {
return ThrowHelper.ThrowInvalidOperationException<CompositionAnimation>("Invalid animation type"); throw new InvalidOperationException("Invalid animation type");
} }
animation.Duration = duration; animation.Duration = duration;

Просмотреть файл

@ -3,7 +3,6 @@
// See the LICENSE file in the project root for more information. // See the LICENSE file in the project root for more information.
using System; using System;
using Microsoft.Toolkit.Diagnostics;
using Windows.Foundation; using Windows.Foundation;
using Windows.UI; using Windows.UI;
using Windows.UI.Xaml; using Windows.UI.Xaml;
@ -118,7 +117,9 @@ namespace Microsoft.Toolkit.Uwp.UI.Animations
} }
else else
{ {
return ThrowHelper.ThrowInvalidOperationException<Timeline>("Invalid animation type"); static Timeline ThrowInvalidOperationException() => throw new InvalidOperationException("Invalid animation type");
return ThrowInvalidOperationException();
} }
animation.BeginTime = delay; animation.BeginTime = delay;

Просмотреть файл

@ -6,7 +6,6 @@ using System;
using System.Collections.Generic; using System.Collections.Generic;
using System.Diagnostics.Contracts; using System.Diagnostics.Contracts;
using System.Numerics; using System.Numerics;
using Microsoft.Toolkit.Diagnostics;
using Windows.UI.Composition; using Windows.UI.Composition;
using Windows.UI.Xaml; using Windows.UI.Xaml;
using Windows.UI.Xaml.Media; using Windows.UI.Xaml.Media;
@ -111,7 +110,7 @@ namespace Microsoft.Toolkit.Uwp.UI.Animations
Axis.X => "AnchorPoint.X", Axis.X => "AnchorPoint.X",
Axis.Y => "AnchorPoint.Y", Axis.Y => "AnchorPoint.Y",
Axis.Z => "AnchorPoint.Z", Axis.Z => "AnchorPoint.Z",
_ => ThrowHelper.ThrowArgumentException<string>("Invalid axis") _ => ThrowArgumentException<string>("Invalid axis")
}; };
/// <summary> /// <summary>
@ -132,7 +131,7 @@ namespace Microsoft.Toolkit.Uwp.UI.Animations
Axis.X => "Translation.X", Axis.X => "Translation.X",
Axis.Y => "Translation.Y", Axis.Y => "Translation.Y",
Axis.Z => "Translation.Z", Axis.Z => "Translation.Z",
_ => ThrowHelper.ThrowArgumentException<string>("Invalid axis") _ => ThrowArgumentException<string>("Invalid axis")
}; };
/// <summary> /// <summary>
@ -153,7 +152,7 @@ namespace Microsoft.Toolkit.Uwp.UI.Animations
Axis.X => "Offset.X", Axis.X => "Offset.X",
Axis.Y => "Offset.Y", Axis.Y => "Offset.Y",
Axis.Z => "Offset.Z", Axis.Z => "Offset.Z",
_ => ThrowHelper.ThrowArgumentException<string>("Invalid axis") _ => ThrowArgumentException<string>("Invalid axis")
}; };
/// <summary> /// <summary>
@ -174,7 +173,7 @@ namespace Microsoft.Toolkit.Uwp.UI.Animations
Axis.X => "Scale.X", Axis.X => "Scale.X",
Axis.Y => "Scale.Y", Axis.Y => "Scale.Y",
Axis.Z => "Scale.Z", Axis.Z => "Scale.Z",
_ => ThrowHelper.ThrowArgumentException<string>("Invalid axis") _ => ThrowArgumentException<string>("Invalid axis")
}; };
/// <summary> /// <summary>
@ -195,7 +194,7 @@ namespace Microsoft.Toolkit.Uwp.UI.Animations
Axis.X => "CenterPoint.X", Axis.X => "CenterPoint.X",
Axis.Y => "CenterPoint.Y", Axis.Y => "CenterPoint.Y",
Axis.Z => "CenterPoint.Z", Axis.Z => "CenterPoint.Z",
_ => ThrowHelper.ThrowArgumentException<string>("Invalid axis") _ => ThrowArgumentException<string>("Invalid axis")
}; };
/// <summary> /// <summary>
@ -217,7 +216,7 @@ namespace Microsoft.Toolkit.Uwp.UI.Animations
Side.Bottom => nameof(InsetClip.BottomInset), Side.Bottom => nameof(InsetClip.BottomInset),
Side.Right => nameof(InsetClip.RightInset), Side.Right => nameof(InsetClip.RightInset),
Side.Left => nameof(InsetClip.LeftInset), Side.Left => nameof(InsetClip.LeftInset),
_ => ThrowHelper.ThrowArgumentException<string>("Invalid clip side") _ => ThrowArgumentException<string>("Invalid clip side")
}; };
/// <summary> /// <summary>
@ -238,7 +237,7 @@ namespace Microsoft.Toolkit.Uwp.UI.Animations
Axis.X => "Size.X", Axis.X => "Size.X",
Axis.Y => "Size.Y", Axis.Y => "Size.Y",
Axis.Z => "Size.Z", Axis.Z => "Size.Z",
_ => ThrowHelper.ThrowArgumentException<string>("Invalid axis") _ => ThrowArgumentException<string>("Invalid axis")
}; };
} }
@ -257,7 +256,7 @@ namespace Microsoft.Toolkit.Uwp.UI.Animations
{ {
Axis.X => nameof(CompositeTransform.TranslateX), Axis.X => nameof(CompositeTransform.TranslateX),
Axis.Y => nameof(CompositeTransform.TranslateY), Axis.Y => nameof(CompositeTransform.TranslateY),
_ => ThrowHelper.ThrowArgumentException<string>("Invalid axis") _ => ThrowArgumentException<string>("Invalid axis")
}; };
/// <summary> /// <summary>
@ -270,7 +269,7 @@ namespace Microsoft.Toolkit.Uwp.UI.Animations
{ {
Axis.X => nameof(CompositeTransform.ScaleX), Axis.X => nameof(CompositeTransform.ScaleX),
Axis.Y => nameof(CompositeTransform.ScaleY), Axis.Y => nameof(CompositeTransform.ScaleY),
_ => ThrowHelper.ThrowArgumentException<string>("Invalid axis") _ => ThrowArgumentException<string>("Invalid axis")
}; };
/// <summary> /// <summary>
@ -283,7 +282,7 @@ namespace Microsoft.Toolkit.Uwp.UI.Animations
{ {
Axis.X => nameof(CompositeTransform.CenterX), Axis.X => nameof(CompositeTransform.CenterX),
Axis.Y => nameof(CompositeTransform.CenterY), Axis.Y => nameof(CompositeTransform.CenterY),
_ => ThrowHelper.ThrowArgumentException<string>("Invalid axis") _ => ThrowArgumentException<string>("Invalid axis")
}; };
/// <summary> /// <summary>
@ -296,9 +295,17 @@ namespace Microsoft.Toolkit.Uwp.UI.Animations
{ {
Axis.X => nameof(FrameworkElement.Width), Axis.X => nameof(FrameworkElement.Width),
Axis.Y => nameof(FrameworkElement.Height), Axis.Y => nameof(FrameworkElement.Height),
_ => ThrowHelper.ThrowArgumentException<string>("Invalid axis") _ => ThrowArgumentException<string>("Invalid axis")
}; };
} }
/// <summary>
/// Throws a new <see cref="ArgumentException"/> with a given message.
/// </summary>
private static T ThrowArgumentException<T>(string message)
{
throw new ArgumentException(message);
}
} }
} }
} }

Просмотреть файл

@ -4,8 +4,8 @@
#nullable enable #nullable enable
using System;
using System.Diagnostics.Contracts; using System.Diagnostics.Contracts;
using Microsoft.Toolkit.Diagnostics;
using Windows.UI.Xaml.Media.Animation; using Windows.UI.Xaml.Media.Animation;
using static Microsoft.Toolkit.Uwp.UI.Animations.AnimationExtensions; using static Microsoft.Toolkit.Uwp.UI.Animations.AnimationExtensions;
@ -46,8 +46,10 @@ namespace Microsoft.Toolkit.Uwp.UI.Animations
EasingType.Quintic => new QuinticEase { EasingMode = easingMode }, EasingType.Quintic => new QuinticEase { EasingMode = easingMode },
EasingType.Sine => new SineEase { EasingMode = easingMode }, EasingType.Sine => new SineEase { EasingMode = easingMode },
_ => ThrowHelper.ThrowArgumentException<EasingFunctionBase?>("Invalid easing type") _ => ThrowArgumentException()
}; };
static EasingFunctionBase ThrowArgumentException() => throw new ArgumentException("Invalid easing type");
} }
} }
} }

Просмотреть файл

@ -2,8 +2,8 @@
// The .NET Foundation licenses this file to you under the MIT license. // The .NET Foundation licenses this file to you under the MIT license.
// See the LICENSE file in the project root for more information. // See the LICENSE file in the project root for more information.
using System;
using System.Numerics; using System.Numerics;
using Microsoft.Toolkit.Diagnostics;
using Windows.UI.Composition; using Windows.UI.Composition;
using Windows.UI.Xaml; using Windows.UI.Xaml;
using Windows.UI.Xaml.Controls; using Windows.UI.Xaml.Controls;
@ -66,11 +66,13 @@ namespace Microsoft.Toolkit.Uwp.UI.Animations
visual.StartAnimation($"{nameof(Visual.Offset)}.{targetAxis}", animation); visual.StartAnimation($"{nameof(Visual.Offset)}.{targetAxis}", animation);
break; break;
default: default:
ThrowHelper.ThrowArgumentException("Invalid target property"); ThrowArgumentException();
break; break;
} }
return animation; return animation;
static ExpressionAnimation ThrowArgumentException() => throw new ArgumentException("Invalid target property");
} }
} }
} }

Просмотреть файл

@ -4,7 +4,6 @@
using System; using System;
using System.Diagnostics.Contracts; using System.Diagnostics.Contracts;
using Microsoft.Toolkit.Diagnostics;
using Windows.Foundation.Metadata; using Windows.Foundation.Metadata;
using Windows.UI.Composition; using Windows.UI.Composition;
using Windows.UI.Xaml.Media.Animation; using Windows.UI.Xaml.Media.Animation;
@ -52,7 +51,10 @@ namespace Microsoft.Toolkit.Uwp.UI.Animations
[Pure] [Pure]
public static RepeatOption Count(int count) public static RepeatOption Count(int count)
{ {
Guard.IsGreaterThanOrEqualTo(count, 0, nameof(count)); if (count < 0)
{
ThrowArgumentOutOfRangeForCount();
}
return new(count); return new(count);
} }
@ -76,7 +78,7 @@ namespace Microsoft.Toolkit.Uwp.UI.Animations
return Forever; return Forever;
} }
return ThrowHelper.ThrowArgumentException<RepeatOption>("Invalid input text"); return ThrowArgumentExceptionForText();
} }
/// <summary> /// <summary>
@ -109,5 +111,21 @@ namespace Microsoft.Toolkit.Uwp.UI.Animations
return (AnimationIterationBehavior.Count, this.value); return (AnimationIterationBehavior.Count, this.value);
} }
/// <summary>
/// Throws a new <see cref="ArgumentOutOfRangeException"/> when the constructor is invoked with an incorrect parameter.
/// </summary>
private static void ThrowArgumentOutOfRangeForCount()
{
throw new ArgumentOutOfRangeException("The parameter \"count\" must be greater than or equal to 0.");
}
/// <summary>
/// Throws a new <see cref="ArgumentOutOfRangeException"/> when the constructor is invoked with an incorrect parameter.
/// </summary>
private static RepeatOption ThrowArgumentExceptionForText()
{
throw new ArgumentException("The input text is not valid to parse a new RepeatOption instance. It must be either a natural number or \"Forever\".");
}
} }
} }

Просмотреть файл

@ -2,9 +2,9 @@
// The .NET Foundation licenses this file to you under the MIT license. // The .NET Foundation licenses this file to you under the MIT license.
// See the LICENSE file in the project root for more information. // See the LICENSE file in the project root for more information.
using System;
using System.Threading; using System.Threading;
using System.Threading.Tasks; using System.Threading.Tasks;
using Microsoft.Toolkit.Diagnostics;
using Windows.UI.Xaml; using Windows.UI.Xaml;
namespace Microsoft.Toolkit.Uwp.UI.Animations namespace Microsoft.Toolkit.Uwp.UI.Animations
@ -53,7 +53,10 @@ namespace Microsoft.Toolkit.Uwp.UI.Animations
/// <inheritdoc/> /// <inheritdoc/>
public override async Task InvokeAsync(UIElement element, CancellationToken token) public override async Task InvokeAsync(UIElement element, CancellationToken token)
{ {
Guard.IsNotNull(Animation, nameof(Animation)); if (Animation is null)
{
ThrowArgumentNullException();
}
await base.InvokeAsync(element, token); await base.InvokeAsync(element, token);
@ -72,6 +75,8 @@ namespace Microsoft.Toolkit.Uwp.UI.Animations
{ {
await Animation.StartAsync(token); await Animation.StartAsync(token);
} }
static void ThrowArgumentNullException() => throw new ArgumentNullException(nameof(Animation));
} }
} }
} }

Просмотреть файл

@ -2,9 +2,9 @@
// The .NET Foundation licenses this file to you under the MIT license. // The .NET Foundation licenses this file to you under the MIT license.
// See the LICENSE file in the project root for more information. // See the LICENSE file in the project root for more information.
using System;
using System.Threading; using System.Threading;
using System.Threading.Tasks; using System.Threading.Tasks;
using Microsoft.Toolkit.Diagnostics;
using Windows.UI.Xaml; using Windows.UI.Xaml;
namespace Microsoft.Toolkit.Uwp.UI.Animations namespace Microsoft.Toolkit.Uwp.UI.Animations
@ -53,7 +53,10 @@ namespace Microsoft.Toolkit.Uwp.UI.Animations
/// <inheritdoc/> /// <inheritdoc/>
public override async Task InvokeAsync(UIElement element, CancellationToken token) public override async Task InvokeAsync(UIElement element, CancellationToken token)
{ {
Guard.IsNotNull(Animation, nameof(Animation)); if (Animation is null)
{
ThrowArgumentNullException();
}
await base.InvokeAsync(element, token); await base.InvokeAsync(element, token);
@ -69,6 +72,8 @@ namespace Microsoft.Toolkit.Uwp.UI.Animations
{ {
Animation.Stop(); Animation.Stop();
} }
static void ThrowArgumentNullException() => throw new ArgumentNullException(nameof(Animation));
} }
} }
} }

Просмотреть файл

@ -9,7 +9,6 @@ using System.Diagnostics.Contracts;
using System.Runtime.CompilerServices; using System.Runtime.CompilerServices;
using System.Threading; using System.Threading;
using System.Threading.Tasks; using System.Threading.Tasks;
using Microsoft.Toolkit.Diagnostics;
using Windows.UI.Xaml; using Windows.UI.Xaml;
namespace Microsoft.Toolkit.Uwp.UI.Animations namespace Microsoft.Toolkit.Uwp.UI.Animations
@ -218,10 +217,12 @@ namespace Microsoft.Toolkit.Uwp.UI.Animations
if (ParentReference?.TryGetTarget(out parent) != true) if (ParentReference?.TryGetTarget(out parent) != true)
{ {
ThrowHelper.ThrowInvalidOperationException("The current animation collection isn't bound to a parent UIElement instance."); ThrowInvalidOperationException();
} }
return parent!; return parent!;
static void ThrowInvalidOperationException() => throw new InvalidOperationException("The current AnimationSet object isn't bound to a parent UIElement instance.");
} }
} }
} }

Просмотреть файл

@ -6,7 +6,6 @@
using System; using System;
using System.Diagnostics.Contracts; using System.Diagnostics.Contracts;
using Microsoft.Toolkit.Diagnostics;
using Windows.UI.Composition; using Windows.UI.Composition;
using Windows.UI.Xaml; using Windows.UI.Xaml;
using Windows.UI.Xaml.Hosting; using Windows.UI.Xaml.Hosting;
@ -85,10 +84,12 @@ namespace Microsoft.Toolkit.Uwp.UI.Animations
if (ParentReference?.TryGetTarget(out parent) != true) if (ParentReference?.TryGetTarget(out parent) != true)
{ {
ThrowHelper.ThrowInvalidOperationException("The current animation collection isn't bound to a parent UIElement instance."); ThrowInvalidOperationException();
} }
return parent!; return parent!;
static void ThrowInvalidOperationException() => throw new InvalidOperationException("The current ImplicitAnimationSet object isn't bound to a parent UIElement instance.");
} }
} }
} }

Просмотреть файл

@ -2,7 +2,7 @@
// The .NET Foundation licenses this file to you under the MIT license. // The .NET Foundation licenses this file to you under the MIT license.
// See the LICENSE file in the project root for more information. // See the LICENSE file in the project root for more information.
using Microsoft.Toolkit.Diagnostics; using System;
using Microsoft.Toolkit.Uwp.UI.Animations; using Microsoft.Toolkit.Uwp.UI.Animations;
using Microsoft.Xaml.Interactivity; using Microsoft.Xaml.Interactivity;
using Windows.UI.Xaml; using Windows.UI.Xaml;
@ -53,7 +53,10 @@ namespace Microsoft.Toolkit.Uwp.UI.Behaviors
/// <inheritdoc/> /// <inheritdoc/>
public object Execute(object sender, object parameter) public object Execute(object sender, object parameter)
{ {
Guard.IsNotNull(Animation, nameof(Animation)); if (Animation is null)
{
ThrowArgumentNullException();
}
if (TargetObject is not null) if (TargetObject is not null)
{ {
@ -65,6 +68,8 @@ namespace Microsoft.Toolkit.Uwp.UI.Behaviors
} }
return null!; return null!;
static void ThrowArgumentNullException() => throw new ArgumentNullException(nameof(Animation));
} }
} }
} }

Просмотреть файл

@ -2,7 +2,7 @@
// The .NET Foundation licenses this file to you under the MIT license. // The .NET Foundation licenses this file to you under the MIT license.
// See the LICENSE file in the project root for more information. // See the LICENSE file in the project root for more information.
using Microsoft.Toolkit.Diagnostics; using System;
using Microsoft.Toolkit.Uwp.UI.Animations; using Microsoft.Toolkit.Uwp.UI.Animations;
using Microsoft.Xaml.Interactivity; using Microsoft.Xaml.Interactivity;
using Windows.UI.Xaml; using Windows.UI.Xaml;
@ -53,7 +53,10 @@ namespace Microsoft.Toolkit.Uwp.UI.Behaviors
/// <inheritdoc/> /// <inheritdoc/>
public object Execute(object sender, object parameter) public object Execute(object sender, object parameter)
{ {
Guard.IsNotNull(Animation, nameof(Animation)); if (Animation is null)
{
ThrowArgumentNullException();
}
if (TargetObject is not null) if (TargetObject is not null)
{ {
@ -65,6 +68,8 @@ namespace Microsoft.Toolkit.Uwp.UI.Behaviors
} }
return null!; return null!;
static void ThrowArgumentNullException() => throw new ArgumentNullException(nameof(Animation));
} }
} }
} }

Просмотреть файл

@ -3,14 +3,11 @@
// See the LICENSE file in the project root for more information. // See the LICENSE file in the project root for more information.
using System; using System;
using System.Collections.Generic;
using System.Collections.ObjectModel; using System.Collections.ObjectModel;
using System.Collections.Specialized; using System.Collections.Specialized;
using System.Globalization; using System.Globalization;
using Microsoft.Toolkit.Diagnostics;
using Microsoft.Toolkit.Uwp.Helpers; using Microsoft.Toolkit.Uwp.Helpers;
using Microsoft.Toolkit.Uwp.UI.Controls.ColorPickerConverters; using Microsoft.Toolkit.Uwp.UI.Controls.ColorPickerConverters;
using Windows.Foundation;
using Windows.UI; using Windows.UI;
using Windows.UI.Xaml; using Windows.UI.Xaml;
using Windows.UI.Xaml.Controls; using Windows.UI.Xaml.Controls;
@ -233,10 +230,12 @@ namespace Microsoft.Toolkit.Uwp.UI.Controls
T child = this.GetTemplateChild(childName) as T; T child = this.GetTemplateChild(childName) as T;
if ((child == null) && isRequired) if ((child == null) && isRequired)
{ {
ThrowHelper.ThrowArgumentNullException(childName); ThrowArgumentNullException();
} }
return child; return child;
static void ThrowArgumentNullException() => throw new ArgumentNullException(nameof(childName));
} }
/// <summary> /// <summary>

Просмотреть файл

@ -5,11 +5,8 @@
using System; using System;
using System.Collections; using System.Collections;
using System.Collections.Generic; using System.Collections.Generic;
using System.Collections.Immutable;
using System.Collections.Specialized; using System.Collections.Specialized;
using System.ComponentModel;
using System.Linq; using System.Linq;
using Microsoft.Toolkit.Diagnostics;
using Microsoft.Toolkit.Uwp.Helpers; using Microsoft.Toolkit.Uwp.Helpers;
namespace Microsoft.Toolkit.Uwp.UI.Controls namespace Microsoft.Toolkit.Uwp.UI.Controls
@ -54,9 +51,12 @@ namespace Microsoft.Toolkit.Uwp.UI.Controls
public InterspersedObservableCollection(object itemsSource) public InterspersedObservableCollection(object itemsSource)
{ {
Guard.IsAssignableToType<IList>(itemsSource, nameof(itemsSource)); if (!(itemsSource is IList list))
{
ThrowArgumentException();
}
ItemsSource = itemsSource as IList; ItemsSource = list;
if (ItemsSource is INotifyCollectionChanged notifier) if (ItemsSource is INotifyCollectionChanged notifier)
{ {
@ -67,6 +67,8 @@ namespace Microsoft.Toolkit.Uwp.UI.Controls
}; };
notifier.CollectionChanged += weakPropertyChangedListener.OnEvent; notifier.CollectionChanged += weakPropertyChangedListener.OnEvent;
} }
static void ThrowArgumentException() => throw new ArgumentNullException("The input items source must be assignable to the System.Collections.IList type.");
} }
private void ItemsSource_CollectionChanged(object source, NotifyCollectionChangedEventArgs eventArgs) private void ItemsSource_CollectionChanged(object source, NotifyCollectionChangedEventArgs eventArgs)
@ -193,8 +195,15 @@ namespace Microsoft.Toolkit.Uwp.UI.Controls
private int ToInnerIndex(int outerIndex) private int ToInnerIndex(int outerIndex)
{ {
#if DEBUG #if DEBUG
Guard.IsInRange(outerIndex, 0, Count, nameof(outerIndex)); if ((uint)outerIndex >= Count)
Guard.IsFalse(_interspersedObjects.ContainsKey(outerIndex), nameof(outerIndex)); // We can't map a inserted key to the original collection! {
throw new ArgumentOutOfRangeException(nameof(outerIndex));
}
if (!_interspersedObjects.ContainsKey(outerIndex))
{
throw new ArgumentException("The outer index can't be inserted as a key to the original collection.");
}
#endif #endif
return outerIndex - _interspersedObjects.Keys.Count(key => key.Value <= outerIndex); return outerIndex - _interspersedObjects.Keys.Count(key => key.Value <= outerIndex);
@ -208,7 +217,10 @@ namespace Microsoft.Toolkit.Uwp.UI.Controls
private int ToOuterIndex(int innerIndex) private int ToOuterIndex(int innerIndex)
{ {
#if DEBUG #if DEBUG
Guard.IsInRange(innerIndex, 0, ItemsSource.Count, nameof(innerIndex)); if ((uint)innerIndex >= ItemsSource.Count)
{
throw new ArgumentOutOfRangeException(nameof(innerIndex));
}
#endif #endif
var keys = _interspersedObjects.OrderBy(v => v.Key); var keys = _interspersedObjects.OrderBy(v => v.Key);
@ -236,7 +248,10 @@ namespace Microsoft.Toolkit.Uwp.UI.Controls
private int ToOuterIndexAfterRemoval(int innerIndexToProject) private int ToOuterIndexAfterRemoval(int innerIndexToProject)
{ {
#if DEBUG #if DEBUG
Guard.IsInRange(innerIndexToProject, 0, ItemsSource.Count + 1, nameof(innerIndexToProject)); if ((uint)innerIndexToProject >= ItemsSource.Count + 1)
{
throw new ArgumentOutOfRangeException(nameof(innerIndexToProject));
}
#endif #endif
//// TODO: Deal with bounds (0 / Count)? Or is it the same? //// TODO: Deal with bounds (0 / Count)? Or is it the same?

Просмотреть файл

@ -4,7 +4,6 @@
using System.Collections; using System.Collections;
using System.Drawing; using System.Drawing;
using Microsoft.Toolkit.Diagnostics;
namespace Microsoft.Toolkit.Uwp.UI.Controls namespace Microsoft.Toolkit.Uwp.UI.Controls
{ {
@ -28,9 +27,6 @@ namespace Microsoft.Toolkit.Uwp.UI.Controls
/// <param name="columns">The number of columns to track.</param> /// <param name="columns">The number of columns to track.</param>
public TakenSpotsReferenceHolder(int rows, int columns) public TakenSpotsReferenceHolder(int rows, int columns)
{ {
Guard.IsGreaterThanOrEqualTo(rows, 0, nameof(rows));
Guard.IsGreaterThanOrEqualTo(columns, 0, nameof(columns));
Height = rows; Height = rows;
Width = columns; Width = columns;

Просмотреть файл

@ -4,7 +4,6 @@
using System; using System;
using System.Collections.Generic; using System.Collections.Generic;
using Microsoft.Toolkit.Diagnostics;
using Windows.Foundation; using Windows.Foundation;
using Windows.UI.Xaml.Controls; using Windows.UI.Xaml.Controls;
@ -63,8 +62,10 @@ namespace Microsoft.Toolkit.Uwp.UI.Controls
{ {
Orientation.Vertical => new Rect(Position.V, Position.U, Size.V, Size.U), Orientation.Vertical => new Rect(Position.V, Position.U, Size.V, Size.U),
Orientation.Horizontal => new Rect(Position.U, Position.V, Size.U, Size.V), Orientation.Horizontal => new Rect(Position.U, Position.V, Size.U, Size.V),
_ => ThrowHelper.ThrowNotSupportedException<Rect>("unsupported orientation"), _ => ThrowArgumentException()
}; };
private static Rect ThrowArgumentException() => throw new ArgumentException("The input orientation is not valid.");
} }
private struct Row private struct Row

Просмотреть файл

@ -3,7 +3,6 @@
// See the LICENSE file in the project root for more information. // See the LICENSE file in the project root for more information.
using System; using System;
using Microsoft.Toolkit.Diagnostics;
using Microsoft.Toolkit.Uwp.UI.Media; using Microsoft.Toolkit.Uwp.UI.Media;
using Windows.UI.Composition; using Windows.UI.Composition;
using Windows.UI.Xaml; using Windows.UI.Xaml;
@ -50,14 +49,21 @@ namespace Microsoft.Toolkit.Uwp.UI.Animations
{ {
if (Target is not TEffect target) if (Target is not TEffect target)
{ {
return ThrowHelper.ThrowArgumentNullException<AnimationBuilder>("The target effect is null, make sure to set the Target property"); static AnimationBuilder ThrowArgumentNullException() => throw new ArgumentNullException("The target effect is null, make sure to set the Target property");
return ThrowArgumentNullException();
} }
if (ExplicitTarget is not string explicitTarget) if (ExplicitTarget is not string explicitTarget)
{ {
return ThrowHelper.ThrowArgumentNullException<AnimationBuilder>( static AnimationBuilder ThrowArgumentNullException()
"The target effect cannot be animated at this time. If you're targeting one of the " + {
"built-in effects, make sure that the PipelineEffect.IsAnimatable property is set to true."); throw new ArgumentNullException(
"The target effect cannot be animated at this time. If you're targeting one of the " +
"built-in effects, make sure that the PipelineEffect.IsAnimatable property is set to true.");
}
return ThrowArgumentNullException();
} }
NormalizedKeyFrameAnimationBuilder<TKeyFrame>.Composition keyFrameBuilder = new( NormalizedKeyFrameAnimationBuilder<TKeyFrame>.Composition keyFrameBuilder = new(
@ -70,7 +76,7 @@ namespace Microsoft.Toolkit.Uwp.UI.Animations
CompositionAnimation animation = keyFrameBuilder.GetAnimation(target.Brush!, out _); CompositionAnimation animation = keyFrameBuilder.GetAnimation(target.Brush!, out _);
return builder.ExternalAnimation(target.Brush, animation); return builder.ExternalAnimation(target.Brush!, animation);
} }
} }
} }

Просмотреть файл

@ -4,7 +4,6 @@
using System; using System;
using System.Threading.Tasks; using System.Threading.Tasks;
using Microsoft.Toolkit.Diagnostics;
using Windows.UI.Xaml.Media; using Windows.UI.Xaml.Media;
namespace Microsoft.Toolkit.Uwp.UI.Helpers namespace Microsoft.Toolkit.Uwp.UI.Helpers
@ -22,7 +21,10 @@ namespace Microsoft.Toolkit.Uwp.UI.Helpers
/// <returns>Awaitable Task</returns> /// <returns>Awaitable Task</returns>
public static Task<bool> ExecuteAfterCompositionRenderingAsync(Action action) public static Task<bool> ExecuteAfterCompositionRenderingAsync(Action action)
{ {
Guard.IsNotNull(action, nameof(action)); if (action is null)
{
ThrowArgumentNullException();
}
var taskCompletionSource = new TaskCompletionSource<bool>(); var taskCompletionSource = new TaskCompletionSource<bool>();
@ -45,6 +47,8 @@ namespace Microsoft.Toolkit.Uwp.UI.Helpers
} }
return taskCompletionSource.Task; return taskCompletionSource.Task;
static void ThrowArgumentNullException() => throw new ArgumentNullException("The parameter \"action\" must not be null.");
} }
} }
} }

Просмотреть файл

@ -5,7 +5,6 @@
using System; using System;
using System.Globalization; using System.Globalization;
using System.Reflection; using System.Reflection;
using Microsoft.Toolkit.Diagnostics;
using Windows.UI; using Windows.UI;
using Color = Windows.UI.Color; using Color = Windows.UI.Color;
@ -24,7 +23,10 @@ namespace Microsoft.Toolkit.Uwp.Helpers
/// <returns>The created <see cref="Color"/>.</returns> /// <returns>The created <see cref="Color"/>.</returns>
public static Color ToColor(this string colorString) public static Color ToColor(this string colorString)
{ {
Guard.IsNotNullOrEmpty(colorString, nameof(colorString)); if (string.IsNullOrEmpty(colorString))
{
ThrowArgumentException();
}
if (colorString[0] == '#') if (colorString[0] == '#')
{ {
@ -79,7 +81,7 @@ namespace Microsoft.Toolkit.Uwp.Helpers
return Color.FromArgb(255, r, g, b); return Color.FromArgb(255, r, g, b);
} }
default: return ThrowHelper.ThrowFormatException<Color>("The string passed in the colorString argument is not a recognized Color format."); default: return ThrowFormatException();
} }
} }
@ -106,7 +108,7 @@ namespace Microsoft.Toolkit.Uwp.Helpers
return Color.FromArgb(255, (byte)(scR * 255), (byte)(scG * 255), (byte)(scB * 255)); return Color.FromArgb(255, (byte)(scR * 255), (byte)(scG * 255), (byte)(scB * 255));
} }
return ThrowHelper.ThrowFormatException<Color>("The string passed in the colorString argument is not a recognized Color format (sc#[scA,]scR,scG,scB)."); return ThrowFormatException();
} }
var prop = typeof(Colors).GetTypeInfo().GetDeclaredProperty(colorString); var prop = typeof(Colors).GetTypeInfo().GetDeclaredProperty(colorString);
@ -116,7 +118,10 @@ namespace Microsoft.Toolkit.Uwp.Helpers
return (Color)prop.GetValue(null); return (Color)prop.GetValue(null);
} }
return ThrowHelper.ThrowFormatException<Color>("The string passed in the colorString argument is not a recognized Color."); return ThrowFormatException();
static void ThrowArgumentException() => throw new ArgumentException("The parameter \"colorString\" must not be null or empty.");
static Color ThrowFormatException() => throw new FormatException("The parameter \"colorString\" is not a recognized Color format.");
} }
/// <summary> /// <summary>

Просмотреть файл

@ -4,7 +4,6 @@
using System; using System;
using System.Reflection; using System.Reflection;
using Microsoft.Toolkit.Diagnostics;
using Windows.Storage; using Windows.Storage;
namespace Microsoft.Toolkit.Uwp.Helpers namespace Microsoft.Toolkit.Uwp.Helpers
@ -31,7 +30,9 @@ namespace Microsoft.Toolkit.Uwp.Helpers
return (T)Convert.ChangeType(value, type); return (T)Convert.ChangeType(value, type);
} }
return ThrowHelper.ThrowNotSupportedException<T>("This serializer can only handle primitive types and strings. Please implement your own IObjectSerializer for more complex scenarios."); return ThrowNotSupportedException();
static T ThrowNotSupportedException() => throw new NotSupportedException("This serializer can only handle primitive types and strings. Please implement your own IObjectSerializer for more complex scenarios.");
} }
/// <summary> /// <summary>