mirror of
https://github.com/PowerShell/PowerShell
synced 2026-06-08 12:12:50 +00:00
Fix Out-GridView by implementing Clone() method to replace old use of binary format serialization (#20050)
This commit is contained in:
+13
@@ -61,6 +61,19 @@ namespace Microsoft.Management.UI.Internal
|
||||
return this.Evaluate(castItem);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Creates a clone of the ComparableValueFilterRule instance.
|
||||
/// </summary>
|
||||
/// <returns>
|
||||
/// Returns a clone of the ComparableValueFilterRule instance.
|
||||
/// </returns>
|
||||
public override FilterRule Clone()
|
||||
{
|
||||
ComparableValueFilterRule<T> rule = (ComparableValueFilterRule<T>)Activator.CreateInstance(this.GetType());
|
||||
rule.DefaultNullValueEvaluation = this.DefaultNullValueEvaluation;
|
||||
return rule;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Determines if item matches a derived classes criteria.
|
||||
/// </summary>
|
||||
|
||||
+14
@@ -24,6 +24,20 @@ namespace Microsoft.Management.UI.Internal
|
||||
this.DefaultNullValueEvaluation = true;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Creates a clone of the DoesNotEqualFilterRule instance.
|
||||
/// </summary>
|
||||
/// <returns>
|
||||
/// A clone of the DoesNotEqualFilterRule instance.
|
||||
/// </returns>
|
||||
public override FilterRule Clone()
|
||||
{
|
||||
DoesNotEqualFilterRule<T> rule = new DoesNotEqualFilterRule<T>();
|
||||
rule.Value = this.Value;
|
||||
rule.DefaultNullValueEvaluation = this.DefaultNullValueEvaluation;
|
||||
return rule;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Determines if item is not equal to Value.
|
||||
/// </summary>
|
||||
|
||||
+14
@@ -24,6 +24,20 @@ namespace Microsoft.Management.UI.Internal
|
||||
this.DisplayName = UICultureResources.FilterRule_Equals;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Creates a new EqualsFilterRule that is a clone of the current instance.
|
||||
/// </summary>
|
||||
/// <returns>
|
||||
/// A new EqualsFilterRule that is a clone of the current instance.
|
||||
/// </returns>
|
||||
public override FilterRule Clone()
|
||||
{
|
||||
EqualsFilterRule<T> rule = new EqualsFilterRule<T>();
|
||||
rule.Value = this.Value;
|
||||
rule.DefaultNullValueEvaluation = this.DefaultNullValueEvaluation;
|
||||
return rule;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Determines if item is equal to Value.
|
||||
/// </summary>
|
||||
|
||||
+6
@@ -48,6 +48,12 @@ namespace Microsoft.Management.UI.Internal
|
||||
/// <returns>Returns true if the item meets the criteria. False otherwise.</returns>
|
||||
public abstract bool Evaluate(object item);
|
||||
|
||||
/// <summary>
|
||||
/// Creates a clone of this FilterRule.
|
||||
/// </summary>
|
||||
/// <returns>Returns a clone of this FilterRule.</returns>
|
||||
public abstract FilterRule Clone();
|
||||
|
||||
#region EvaluationResultInvalidated
|
||||
|
||||
/// <summary>
|
||||
|
||||
+1
-1
@@ -27,7 +27,7 @@ namespace Microsoft.Management.UI.Internal
|
||||
/// </returns>
|
||||
public static FilterRule DeepCopy(this FilterRule rule)
|
||||
{
|
||||
throw new NotSupportedException();
|
||||
return rule.Clone();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
+15
@@ -50,6 +50,21 @@ namespace Microsoft.Management.UI.Internal
|
||||
protected set;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Creates a clone of the FilterRule.
|
||||
/// </summary>
|
||||
/// <returns>
|
||||
/// A clone of the FilterRule.
|
||||
/// </returns>
|
||||
public override FilterRule Clone()
|
||||
{
|
||||
IsBetweenFilterRule<T> clone = new IsBetweenFilterRule<T>();
|
||||
clone.DefaultNullValueEvaluation = this.DefaultNullValueEvaluation;
|
||||
clone.StartValue = this.StartValue;
|
||||
clone.EndValue = this.EndValue;
|
||||
return clone;
|
||||
}
|
||||
|
||||
#endregion Properties
|
||||
|
||||
#region Ctor
|
||||
|
||||
+12
@@ -20,6 +20,18 @@ namespace Microsoft.Management.UI.Internal
|
||||
this.DisplayName = UICultureResources.FilterRule_IsEmpty;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Creates a clone of the IsEmptyFilterRule instance.
|
||||
/// </summary>
|
||||
/// <returns>
|
||||
/// A clone of IsEmptyFilterRule instance.
|
||||
/// </returns>
|
||||
public override FilterRule Clone()
|
||||
{
|
||||
IsEmptyFilterRule rule = new IsEmptyFilterRule();
|
||||
return rule;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Gets a values indicating whether the supplied item is empty.
|
||||
/// </summary>
|
||||
|
||||
+14
@@ -24,6 +24,20 @@ namespace Microsoft.Management.UI.Internal
|
||||
this.DisplayName = UICultureResources.FilterRule_GreaterThanOrEqual;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Creates a new IsGreaterThanFilterRule that is a clone of the current instance.
|
||||
/// </summary>
|
||||
/// <returns>
|
||||
/// A new IsGreaterThanFilterRule that is a clone of the current instance.
|
||||
/// </returns>
|
||||
public override FilterRule Clone()
|
||||
{
|
||||
IsGreaterThanFilterRule<T> rule = new IsGreaterThanFilterRule<T>();
|
||||
rule.Value = this.Value;
|
||||
rule.DefaultNullValueEvaluation = this.DefaultNullValueEvaluation;
|
||||
return rule;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Determines if item is greater than Value.
|
||||
/// </summary>
|
||||
|
||||
+14
@@ -24,6 +24,20 @@ namespace Microsoft.Management.UI.Internal
|
||||
this.DisplayName = UICultureResources.FilterRule_LessThanOrEqual;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Creates a new IsLessThanFilterRule that is a clone of the current instance.
|
||||
/// </summary>
|
||||
/// <returns>
|
||||
/// A new IsLessThanFilterRule that is a clone of the current instance.
|
||||
/// </returns>
|
||||
public override FilterRule Clone()
|
||||
{
|
||||
IsLessThanFilterRule<T> rule = new IsLessThanFilterRule<T>();
|
||||
rule.Value = this.Value;
|
||||
rule.DefaultNullValueEvaluation = this.DefaultNullValueEvaluation;
|
||||
return rule;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Determines if item is less than Value.
|
||||
/// </summary>
|
||||
|
||||
+12
@@ -20,6 +20,18 @@ namespace Microsoft.Management.UI.Internal
|
||||
this.DisplayName = UICultureResources.FilterRule_IsNotEmpty;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Creates a clone of the IsNotEmptyFilterRule.
|
||||
/// </summary>
|
||||
/// <returns>
|
||||
/// A clone of the IsNotEmptyFilterRule.
|
||||
/// </returns>
|
||||
public override FilterRule Clone()
|
||||
{
|
||||
IsNotEmptyFilterRule rule = new IsNotEmptyFilterRule();
|
||||
return rule;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Gets a values indicating whether the supplied item is not empty.
|
||||
/// </summary>
|
||||
|
||||
+14
@@ -37,6 +37,20 @@ namespace Microsoft.Management.UI.Internal
|
||||
private set;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Creates a clone of this <see cref="PropertiesTextContainsFilterRule"/>.
|
||||
/// </summary>
|
||||
/// <returns>
|
||||
/// A clone of this <see cref="PropertiesTextContainsFilterRule"/>.
|
||||
/// </returns>
|
||||
public override FilterRule Clone()
|
||||
{
|
||||
PropertiesTextContainsFilterRule clone = new PropertiesTextContainsFilterRule();
|
||||
clone.DefaultNullValueEvaluation = this.DefaultNullValueEvaluation;
|
||||
clone.PropertyNames = new List<string>(this.PropertyNames);
|
||||
return clone;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Evaluates whether the specified properties on <paramref name="item"/> contain the current value.
|
||||
/// </summary>
|
||||
|
||||
+11
@@ -120,6 +120,17 @@ namespace Microsoft.Management.UI.Internal
|
||||
return this.AvailableRules.SelectedValue.Evaluate(propertyValue);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Creates a clone of the PropertyValueSelectorFilterRule instance.
|
||||
/// </summary>
|
||||
/// <returns>
|
||||
/// Returns a clone of the PropertyValueSelectorFilterRule instance.
|
||||
/// </returns>
|
||||
public override FilterRule Clone()
|
||||
{
|
||||
return new PropertyValueSelectorFilterRule<T>(this.PropertyName, this.DisplayName, this.AvailableRules.AvailableValues);
|
||||
}
|
||||
|
||||
#endregion Public Methods
|
||||
|
||||
#region Private Methods
|
||||
|
||||
+17
@@ -70,6 +70,23 @@ namespace Microsoft.Management.UI.Internal
|
||||
return this.AvailableRules.SelectedValue.Evaluate(item);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Creates a clone of the SelectorFilterRule instance.
|
||||
/// </summary>
|
||||
/// <returns>
|
||||
/// Returns a clone of the SelectorFilterRule instance.
|
||||
/// </returns>
|
||||
public override FilterRule Clone()
|
||||
{
|
||||
SelectorFilterRule clone = new SelectorFilterRule();
|
||||
clone.DisplayName = this.DisplayName;
|
||||
clone.AvailableRules = this.AvailableRules;
|
||||
clone.AvailableRules.SelectedValueChanged += clone.AvailableRules_SelectedValueChanged;
|
||||
clone.AvailableRules.SelectedValue.EvaluationResultInvalidated += clone.SelectedValue_EvaluationResultInvalidated;
|
||||
|
||||
return clone;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Called when the SelectedValue within AvailableRules changes.
|
||||
/// </summary>
|
||||
|
||||
+9
@@ -53,6 +53,15 @@ namespace Microsoft.Management.UI.Internal
|
||||
|
||||
#endregion Ctor
|
||||
|
||||
/// <summary>
|
||||
/// Creates a clone of the FilterRule.
|
||||
/// </summary>
|
||||
/// <returns>A clone of the FilterRule.</returns>
|
||||
public override FilterRule Clone()
|
||||
{
|
||||
return base.Clone();
|
||||
}
|
||||
|
||||
private void Value_PropertyChanged(object sender, PropertyChangedEventArgs e)
|
||||
{
|
||||
if (e.PropertyName == "Value")
|
||||
|
||||
+14
@@ -24,6 +24,20 @@ namespace Microsoft.Management.UI.Internal
|
||||
this.DisplayName = UICultureResources.FilterRule_Contains;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Creates a clone of the TextContainsFilterRule instance.
|
||||
/// </summary>
|
||||
/// <returns>
|
||||
/// Returns a clone of the TextContainsFilterRule instance.
|
||||
/// </returns>
|
||||
public override FilterRule Clone()
|
||||
{
|
||||
TextContainsFilterRule rule = new TextContainsFilterRule();
|
||||
rule.Value = this.Value;
|
||||
rule.DefaultNullValueEvaluation = this.DefaultNullValueEvaluation;
|
||||
return rule;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Determines if Value is contained within data.
|
||||
/// </summary>
|
||||
|
||||
+14
@@ -21,6 +21,20 @@ namespace Microsoft.Management.UI.Internal
|
||||
this.DefaultNullValueEvaluation = true;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Creates a clone of the TextDoesNotContainFilterRule instance.
|
||||
/// </summary>
|
||||
/// <returns>
|
||||
/// A clone of the TextDoesNotContainFilterRule instance.
|
||||
/// </returns>
|
||||
public override FilterRule Clone()
|
||||
{
|
||||
TextDoesNotContainFilterRule rule = new TextDoesNotContainFilterRule();
|
||||
rule.Value = this.Value;
|
||||
rule.DefaultNullValueEvaluation = this.DefaultNullValueEvaluation;
|
||||
return rule;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Determines if Value is not contained within data.
|
||||
/// </summary>
|
||||
|
||||
+14
@@ -21,6 +21,20 @@ namespace Microsoft.Management.UI.Internal
|
||||
this.DefaultNullValueEvaluation = true;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Creates a clone of the TextDoesNotEqualFilterRule instance.
|
||||
/// </summary>
|
||||
/// <returns>
|
||||
/// Returns a clone of the TextDoesNotEqualFilterRule instance.
|
||||
/// </returns>
|
||||
public override FilterRule Clone()
|
||||
{
|
||||
TextDoesNotEqualFilterRule rule = new TextDoesNotEqualFilterRule();
|
||||
rule.Value = this.Value;
|
||||
rule.DefaultNullValueEvaluation = this.DefaultNullValueEvaluation;
|
||||
return rule;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Determines if data is not equal to Value.
|
||||
/// </summary>
|
||||
|
||||
+14
@@ -24,6 +24,20 @@ namespace Microsoft.Management.UI.Internal
|
||||
this.DisplayName = UICultureResources.FilterRule_TextEndsWith;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Creates a clone of the TextEndsWithFilterRule instance.
|
||||
/// </summary>
|
||||
/// <returns>
|
||||
/// Returns a clone of the TextEndsWithFilterRule instance.
|
||||
/// </returns>
|
||||
public override FilterRule Clone()
|
||||
{
|
||||
TextEndsWithFilterRule rule = new TextEndsWithFilterRule();
|
||||
rule.Value = this.Value;
|
||||
rule.DefaultNullValueEvaluation = this.DefaultNullValueEvaluation;
|
||||
return rule;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Determines if data ends with Value.
|
||||
/// </summary>
|
||||
|
||||
+14
@@ -23,6 +23,20 @@ namespace Microsoft.Management.UI.Internal
|
||||
this.DisplayName = UICultureResources.FilterRule_Equals;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Creates a clone of the TextEqualsFilterRule instance.
|
||||
/// </summary>
|
||||
/// <returns>
|
||||
/// Returns a clone of the TextEqualsFilterRule instance.
|
||||
/// </returns>
|
||||
public override FilterRule Clone()
|
||||
{
|
||||
TextEqualsFilterRule rule = new TextEqualsFilterRule();
|
||||
rule.Value = this.Value;
|
||||
rule.DefaultNullValueEvaluation = this.DefaultNullValueEvaluation;
|
||||
return rule;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Determines if data is equal to Value.
|
||||
/// </summary>
|
||||
|
||||
+11
@@ -60,6 +60,17 @@ namespace Microsoft.Management.UI.Internal
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Creates a clone of the FilterRule.
|
||||
/// </summary>
|
||||
/// <returns>
|
||||
/// Returns a clone of the FilterRule.
|
||||
/// </returns>
|
||||
public override FilterRule Clone()
|
||||
{
|
||||
return base.Clone();
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Initializes a new instance of the TextFilterRule class.
|
||||
/// </summary>
|
||||
|
||||
+11
@@ -24,6 +24,17 @@ namespace Microsoft.Management.UI.Internal
|
||||
this.DisplayName = UICultureResources.FilterRule_TextStartsWith;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Creates a clone of the TextStartsWithFilterRule instance.
|
||||
/// </summary>
|
||||
/// <returns>
|
||||
/// Returns a clone of the TextStartsWithFilterRule instance.
|
||||
/// </returns>
|
||||
public override FilterRule Clone()
|
||||
{
|
||||
return base.Clone();
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Determines if data starts with Value.
|
||||
/// </summary>
|
||||
|
||||
Reference in New Issue
Block a user