You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
* Features/build project (#80)
* Remvoing separate formatting settings class
* Moving TranslationSettings to base class
* Moving CommentExpression to its own class
* Basic support for parameterless lambda to source code translation
* Adding class + method expression factory methods / Ensuring source code expressions can be visited
* Support for translation of Action lambdas
* support for parameterised lambda to class method translation
* Extending test coverage
* Organising tests
* Support for converting non-lambdas to methods
* Support for listing usings in source code translations
* Recognising required usings from static member accesses
* Including usings from Method parameters
* Including usings from method return types
* Passing unscoped, accessed variables into stand-alone method translations
* Extra test coverage
* Including usings from New expressions
* Adding usings from generic type arguments
* Adding usings for generic method type arguments / Sorting System usings first
* Only including explicit generic arguments in required usings list
* Support for custom class names
* Extra test coverage / Fixing params parameter + non-params argument translation
* Support for customising generated code namespace
* Support for generating code in a given Type's namespace
* Including extension method usings
* Support for custom generated method names
* Support for translating blocks with multiple lambdas into multi-class source code
* Passing context classes to custom source code naming methods
* Ensuring generated source code source compiles
* Tidying
* Support for naming methods using the ClassExpression and IMethodNamingContext
* Support for source-code-level method naming
* Adding usings from static method calls and catch block variables
* Including usings from Enum member accesses
* Extra test coverage
* Support for multi-method classes
* Updating documentation
* Support for adding generated class summary documentation using CommentExpressions
* Start of source code-building API
* Adding custom class and method naming to source code building
* Support for multi-class, multi-method SourceCodeExpression building
* Erroring if duplicate method name specified
* Erroring if duplicate class name specified
* Support for adding summaries to methods
* Start of inline block handling
* Continued
* Extracting inline Expressions to class methods and embedding method calls
* Support for generating private helper methods from multi-line inline blocks
* Moving class generation tests to source code generation
* Migrating final class translation tests / Removing class translation extension method
* Consolidating tests, removing public ClassExpression API
* Migrating method expression + translation tests to full source code translation
* Enabling passing of non-Lambda expressions to Method builder
* New test
* Handling parameters for inline block methods
* Handling empty blocks, re: issue #78 / Merging refactoring from source code generation branch
* v2.5.1 NuGet package and v3.3.1 Visualizers
* Managing multi-line block method extraction
* Splitting out source code analysis and translation/ Resetting source code variable scope calculation / Organising SourceCode classes
* Fixing source code translation
* Fixing using list generation
* Start of MethodScope analysis
* Handling unscoped variable accesses in top-level MethodExpressions
* Start of multiline block -> method conversion
* Handling passing parameters to extracted block methods
* Validating custom class and method anmes
* Validating built source code
* Support for no-namespace classes
* Erroring if a block has an invalid structure
* Enforcing block expression structure
* Support for building classes implementing interfaces
* Support for building classes which implement multiple interfaces
* Ensuring Class Interfaces are non-null
* Test coverage for ambiguous interface implementatiion matches
* Start of split to dedicated .Build project
* Fixing project build
* Moving tests to Build namespace
* Updating Build to net46 + netstandard1.3, adding Build.Utilities package
* Adding build.targets file and start of MsBuild Task
* Splitting Build tests into dedicated projects
* Filling in build task steps
* Adding file abstraction
* Adding .NET Standard compiler / Build task completed
* Adding .NET Framework Build test console app
* Adding compiler unit tests, NetFramework Compiler passes!
* Working NetStandardCompiler!
* Getting ExpressionBuilder class irrespective of namespace
* Plugging NetStandardCompiler into build task
* Updating ReadableExpressions to v3 / NetFramework console package install working!
* Adding .NET Core Build test console app
* Adding Build template files to contentFiles package path for .NET Core
* Using MsBuild task to write ExpressionBuilder files during .NET Core compilation
* Making members public and adding documentation to support BuildableExpressions as a separate package
* Refactoring and making members publix
* Making members public and adding documentation
* Removing build projects
* Removing .Build NuGet bat file
* Updating package description
* Making CommentExpression visitable
* Converting CommentExpression to a type of ConstantExpression so it can be compiled
* Reinstating a compilable ComentExpression!
* Updating ExpressionAnalysis to support replacement of the analysed Expression's nodes
* Allowing setting ExpressionAnalysis.ResultExpression from derived types
* Adding LambdaExpression.Update extension method / Surfacing various ExpressionAnalysis methods for override
* Handling updated assignments in ExpressionAnalysis
* Moving interfaces out of dedicated namespace
* Support for custom ITranslation use in ExpressionTranslation
* Removing redundant ctor modifier
* Revert "Removing redundant ctor modifier"
This reverts commit a24a6c1.
* Support for surfacing BCL Expressions from Extension Expressions for analysis
* Updating visualizers to v3.4
* Adding ILMerge as a tool as NuGet package seems to silently fail
* Splitting NetStandardPolyfills and ReadableExpressions out from visualizer object source assemblies to support custom translations
* v3.4 Visualizer assemblies and installer
* Support for merging ExpressionAnalysis
* Including class and new() generic parameter constraints in Method translations
* Handling generic parameter struct constraints
* Start of interface type constraint translation
* Support for translating generic parameters with interface type constraints / Switching IMethod to use ReadOnlyCollections
* Support for translating generic argument class type constraints
* Support for translating struct and multiple interface constraints
* Extending constrain translation test coverage
* Support for custom open IGenericArguments
* Adding GenericArgumentTranslation
* Surfacing TypeOfOperatorTranslation
* Surfacing an operator translation base type
* Surfacing a DefaultOperatorTranslation
* Simplifying IGenericArgument
* Support for specifying a custom Expression default value behaviour
* Using BCL method to get generic argument type constraints
* Only allowing default translation null keywords for closed generic types
* Adding IMethod.IsOverride extension method, including override keyword in MethodInfo translation
* Handling null method declaring types
* Fixing method definition size estimation
* Adding IsOverride as an IMethod member
* Splitting out generic parameter and generic parameter constrain translation
* Support for conversion of ICustomAnalysableExpressions
* Adding IProperty for property abstraction translation / Surfacing more reflection translation infrastructure / Fixing overridden property translation
* Fixing test
* Support for Private Protected accessor translation
* Support for overriding property accessor start and end translation
* Usin property instead of accessor to determine scope
* Skipping modifiers for interface Property translation
* Ading marker interface for interface member translation
* Tweaking interface member marker interface
* Support for using a type abstraction for type translation
* Extending support for translation of abstractions
* Support for translating constant fields
* Switching NuGet packer to msbuild to re-enable .NET 3.5
* Support for translation of a ctor abstraction
* Surfacing ParameterSetTranslation
* Adding .NET Standard 2.0 target / Updating NetStandardPoyfills reference / Updating to v2.6
* Updating years
* Adding UnitTests.Common project
* Updating NuGet packages
* Adding test project for .NET Standard 1.0 target / Fixing escape character translation in verbatim strings
* Fixign project whitespace
* Removing 'Interfaces' namespace
* Adding v2.6 NuGet package
* Adding v2.6 preview NuGet package
* Fixing project merge
* Fixing sttaic method translation in helper factory method
* Exposing Assembly from IType
* Support for translating static constructors
* Optimising default(v09d) and default 'null' translations
* Fixing generic arguments supplied by null method arguments
* Fixing 'upcast to object' translations
* Fixing potential BclTypeWrapper dictionary threading issue
* Renaming 'Bcl' types to 'Clr'
* Removing explicit object casting from string -> object casts
* Simplifying DefaultValueTranslation check
* Updating for new Polyfills methods
* Using updated method arguments in Expression analysis
* Translating simple-type array constants to new array init expressions
* Translating Regex constants into new Regex expressions
* Handling array constants with non-array types
* Showing object casts in nested cast Expressions / Removing unused code
* Surfacing ExpressionAnalysis Lambda VisitAndConvert
* Handling non-MethodCallExpression Call Expressions when analysing lambda arguments
* Fixing nested casts check
* Only converting lambdas to method groups if return types match
* Providing an ExpressionAnalysis extension point for determining if a variable should be included in a block's variable declaration list
* Removing switch case break statements when a case ends with a return or throw
* Removing unreachable statements from block and switch case expressions
* Simplifying package icon
* Making block variable declaration determination more accurate
* Extra test coverage
* Adding Singleton ClrTypeWrapper for System.Attribute
* Adding NuGet package path to main project
* Support for translating flags enum constants
* Fixing handling of base Enum type
* Surfacing an empty ITranslatable object
* Surfacing IPotentialEmptyTranslatable
* Switching EmptyTranslatble.Instance to IPotentialEmptyTranslatable
* Proviing extension point for start of property translations / Fixing documentation typo
* Surfacing translation helper extensions
* Tidying
* Tidying
* Fixing documentation typos
* Optimising parameter set argument translation
* Removing unnecessary null check
* Tidying
* Support for extension of method and constructor parameter definition translations
* Ading IParameter.IsRef
* Optimising indexer method call translation
* Simplifying indexer method call check
* Handling comment strings which already contain slashes
* Improving variable name generation
* Extra test coverage
* Removing unused method
* Updating readme and package tags
* Updating logo image
* Fixing Increment + Decrement translation, re: #84
* Updating release notes
* Switching version back to preview1
* Start of readthedocs documentation
* Updating dox index
* Fixing readme links
* Updating extension methods links
* Documentating extension methods
* Update extension-methods.md
* Extensibililty documentation
* Dox update
* Dox
* Adding v3-preview1 NuGet package
as well as reflection objects like `Type`, `FieldInfo`, `PropertyInfo`, etc.
4
8
5
-
ReadableExpressions is set of [Debugger Visualizers](https://marketplace.visualstudio.com/items?itemName=vs-publisher-1232914.ReadableExpressionsVisualizers)
6
-
and [a NuGet-packaged](https://www.nuget.org/packages/AgileObjects.ReadableExpressions) extension method for
7
-
readable, source-code versions of [Expression Trees](https://msdn.microsoft.com/en-us/library/bb397951.aspx).
9
+
## Debugger Visualizer
8
10
9
-
### Debugger Visualizers
10
-
11
-
An installer for the Expression Debugger Visualizers can be downloaded from
11
+
The Debugger Visualizer installer can be downloaded from
12
12
[the Visual Studio Gallery](https://marketplace.visualstudio.com/items?itemName=vs-publisher-1232914.ReadableExpressionsVisualizers).
.NET 5 has [a breaking change](https://github.com/dotnet/runtime/issues/29976), which disables `BinaryFormatter` serialization by default. This causes issues with the ReadableExpressions visualizers (and [elsewhere](https://github.com/nhibernate/nhibernate-core/issues/2603)) when debugging ASP.NET Core apps as the VS debugger [uses](https://wrightfully.com/writing-a-readonly-debugger-visualizer)`BinaryFormatter` to serialize objects before sending them to the visualizer.
24
+
.NET 5 had [a breaking change](https://github.com/dotnet/runtime/issues/29976), which disables `BinaryFormatter` serialization by default.
25
+
This has caused issues with the ReadableExpressions visualizers (and [elsewhere](https://github.com/nhibernate/nhibernate-core/issues/2603))
26
+
when debugging ASP.NET Core apps as the VS debugger [uses](https://wrightfully.com/writing-a-readonly-debugger-visualizer)`BinaryFormatter`
27
+
to serialize objects before sending them to the visualizer.
25
28
26
-
[The solution](https://developercommunity2.visualstudio.com/t/visual-studio-debugger-visualizers-and-binaryforma/1278642?from=email&viewtype=all#T-N1314383) is to enable the `BinaryFormatter` in Debug only by adding the following to your ASP.NET Core csproj:
29
+
[The solution](https://developercommunity2.visualstudio.com/t/visual-studio-debugger-visualizers-and-binaryforma/1278642) is to enable the
30
+
`BinaryFormatter` in Debug only by adding the following to your ASP.NET Core csproj:
27
31
28
32
```xml
29
33
<PropertyGroup>
@@ -34,96 +38,26 @@ The visualizer has both Light and Dark themes:
34
38
</PropertyGroup>
35
39
```
36
40
37
-
### NuGet Package
41
+
##Extension Methods
38
42
39
-
The extension method is available in [a NuGet package](https://www.nuget.org/packages/AgileObjects.ReadableExpressions)
40
-
targeting [.NETStandard 1.0](https://blogs.msdn.microsoft.com/dotnet/2016/09/26/introducing-net-standard)+ and
41
-
.NET 3.5+:
43
+
[The extension methods](https://readableexpressions.readthedocs.io/extension-methods) are available
To output a source code comment when a lambda is '[quoted](https://stackoverflow.com/questions/3716492/what-does-expression-quote-do-that-expression-constant-can-t-already-do)', use:
102
-
103
-
```csharp
104
-
stringreadable=myExpression
105
-
.ToReadableString(c=>c.ShowQuotedLambdaComments);
106
-
```
107
-
108
-
To define a custom factory for naming anonymous types, use:
109
-
110
-
```csharp
111
-
stringreadable=myExpression
112
-
.ToReadableString(c=>c.NameAnonymousTypesUsing(
113
-
anonType=>GetAnonTypeName(anonType)));
114
-
```
115
-
116
-
To define a custom factory for translating `ConstantExpression` values, use:
0 commit comments