mirror of
https://github.com/microsoft/PowerToys
synced 2025-08-30 22:15:11 +00:00
* WIP Hosts - remove deps * Add consumer app * Move App and MainWindow to Consumer app. Make Hosts dll * Try consume it * Fix errors * Make it work with custom build targets * Dependency injection Refactor Explicit page creation Wire missing dependencies * Fix installer * Remove unneeded stuff * Fix build again * Extract UI and logic from MainWindow to RegistryPreviewMainPage * Convert to lib Change namespace to RegistryPreviewUILib Remove PT deps * Add exe app and move App.xaml and MainWindow.xaml * Consume the lib * Update Hosts package creation * Fix RegistryPreview package creation * Rename RegistryPreviewUI back to RegistryPreview * Back to consuming lib * Ship icons and assets in nuget packages * Rename to EnvironmentVariablesUILib and convert to lib * Add app and consume * Telemetry * GPO * nuget * Rename HostsPackageConsumer to Hosts and Hosts lib to HostsUILib * Assets cleanup * nuget struct * v0 * assets * [Hosts] Re-add AppList to Lib Assets, [RegPrev] Copy lib assets to out dir * Sign UI dlls * Revert WinUIEx bump * Cleanup * Align deps * version exception dll * Fix RegistryPreview crashes * XAML format * XAML format 2 * Pack .pri files in lib/ dir --------- Co-authored-by: Darshak Bhatti <dabhatti@microsoft.com>
44 lines
1.4 KiB
C#
44 lines
1.4 KiB
C#
// Copyright (c) Microsoft Corporation
|
|
// The Microsoft Corporation licenses this file to you under the MIT license.
|
|
// See the LICENSE file in the project root for more information.
|
|
|
|
using System;
|
|
using System.Linq.Expressions;
|
|
|
|
namespace HostsUILib.Helpers
|
|
{
|
|
// https://stackoverflow.com/a/22569086
|
|
public static class ExpressionExtensions
|
|
{
|
|
public static Expression<Func<T, bool>> And<T>(
|
|
this Expression<Func<T, bool>> expr1,
|
|
Expression<Func<T, bool>> expr2)
|
|
{
|
|
var secondBody = expr2.Body.Replace(expr2.Parameters[0], expr1.Parameters[0]);
|
|
return Expression.Lambda<Func<T, bool>>(Expression.AndAlso(expr1.Body, secondBody), expr1.Parameters);
|
|
}
|
|
|
|
public static Expression Replace(this Expression expression, Expression searchEx, Expression replaceEx)
|
|
{
|
|
return new ReplaceVisitor(searchEx, replaceEx).Visit(expression);
|
|
}
|
|
|
|
internal sealed class ReplaceVisitor : ExpressionVisitor
|
|
{
|
|
private readonly Expression _from;
|
|
private readonly Expression _to;
|
|
|
|
public ReplaceVisitor(Expression from, Expression to)
|
|
{
|
|
_from = from;
|
|
_to = to;
|
|
}
|
|
|
|
public override Expression Visit(Expression node)
|
|
{
|
|
return node == _from ? _to : base.Visit(node);
|
|
}
|
|
}
|
|
}
|
|
}
|