-
Notifications
You must be signed in to change notification settings - Fork 67
ChangeLog
Jay Tuley edited this page Jul 3, 2013
·
6 revisions
-
Core: Fix for null comparison bug in
ActLike
proxy - Core: Better proxy handling of generics
- Core: Extension Method to Instance Method Proxy
-
Core:
UseNamedArgument
can be applied at interface level -Thanks @fearthecowboy!
- Core: Strong Named (but not secret in Repository)
-
Core: Recursive Interfaces when using
ActLIke
-
Core:
FluentRegex
-
Core:
Impromtu.CoerceConvert(object target, Type type)
- This uses every dynamic conversion api avaialbe -
Core: Fixed
ImpromptuDictionary
coercion bug withEnums
-
Core: Add Int and String indexer support to
InvokeGetChain
&InvokeSetChain
-
Core: Added Support for
Silverlight5
-
Core: Added
Impromptu.InvokeBinaryOperator
andImpromptu.InvokeUnaryOpartor
- MVVM: Strong Named (but not secret in Repository)
- MVVM: Added support for dynamic property binding syntax in Silverlight 5
-
MVVM: Added 3rd party IoC support from combining with
NoMVVM
- MVVM: Updated configuring property dependencies to use Setup fluent property
- FSharp: Strong Named (but not secret in Repository)
- Simplified Dynamic
ActLike
Syntax - Fixed bug involving subsequent named argument invoke calls forgeting argument names
- Improved Com interop
- Fixed recursive bug with type coercion of !ImpromptuDictionary & !ImpromptuGet
-
>?>
operator for dynamically calling implicit operator -
>>?>>
operator for dynamically calling explicit operator -
dynAddAssign(obj)?Event<-EventHandler
operator for dynamically adding events -
dynSubtractAssign(obj)?Event<-EventHandler
operator for dynamically removing events -
dynArg(objArg)?Name
syntax for pairing argument names when dynamically invoking
-
Core: can cast type to
StaticContext
to late bind static methods - Core: interface proxy hides implementation methods with separate interface
- Core: fixed large number of arguments bug (>15)
-
Core:
Build<>.NewList
is now property rather than method so that it can be stored and used from a variable - Core: Curry Cast no longer has artificial argument limit
-
Core: added
ImpromptuLazy<>
dynamic wrapper aroundLazy<>
-
Core: added
ImpromptuLateLibraryType
dynamic lookup type at runtime can dynamically call static methods and constructor. - FSharp: Dynamic operator implementation
-
FSharp:
!?
prefix operator allows direct invoke of delegates/objects dynamically
- Small curry bugs with currying instance and static methods.
- Mono runtime & compiler fixes for currying.
- Core: Function & Method Currying/Partial Apply with Impromptu.Curry
- Core: Impromptu.Invoke(!CallSite,...) is now Impromptu.!InvokeCallSite(!CallSite,..) old name marked as obsolete.
- Core: Impromptu.Invoke(target,...) allows for dynamic invocation of delegates and dynamic objects.
-
Core:
InvokeGetChained
,InvokeSetChained
- Allows calling via property chain. -
Core:
InvokeSetAll
- Allows calling several properties in one method. -
Core:
Impromptu.GetMemberNames()
gets dynamic members and public properties. -
Core: Interface result coercion of
ImpromptuGet
&ImpromptuDictionary
fall back toTypeConverter
if need be (including builtin silverlight converters). - Core: Proxy indexers now work with VB.NET
- Core: Fixed issues with possible interface collisions.
-
Core:
PropertyNotifyChanged
more efficient -
Core:
ImpromptuFactory
can now create via method call with constructor args. - MVVM: new experimental window factory
- Core: Fixed bug that wouldn't allow context parameter for really late binding to be just a plain Type object
- Core: Improved proxy generation to include attributes used by dynamic invocation to resolve overloads
-
MVVM: Added a Property-
ToString
proxy object
-
Core: Fixed invocation issue with delegates that have out parameters in
ImpromptuDictionary
-
Core: Fixed Issue with
InvokeConstructor
on Mono - Core: Improved Invoke methods performance by a factor of 2.
-
Core: Added a convenience factory method for
CacheableInvocation
the usesCallInfo
-
Core: Added equals/hashcode methods to
CacheableInvocation
-
Core: Added missing event support for
ActLike
-
Core: Added
Impromptu.InvokeIsEvent
,Impromptu.InvokeAddAssign
andInvokeSubtractAssign
-
Core: Added
ImpromptuPropertyDescriptor
for DynamicPropertyDescriptor
andImpromptuList
implementsITypedList
-
Core:
ImpromptuForwarder
supports forwarding events. -
Core: class Invocation breaking change
InvokeWithArgs
->Invoke, and Invoke->InvokeWithStoredArgs
-
Core: Added
CacheableInvocation
with more signature information added in the creation of this invocation performance gains up to 25x faster on invoke. -
MVVM: Added
ViewModel
Event Binding Syntax -
MVVM: Added
ViewModel
specificPropertyChange
subscription Syntax -
MVVM:
ImpromptuBindingList
supportsDataGrid
AutoColumns
- All: Added Public symbol/source server debugging support
-
Core:
ActLike
Proxies and most dynamic classes now serializable. -
Core: Added
ImpromptuForwarder
base class -
Core: Added
ImpromptuRecorder
dynamic class -
Core: Added
Impromptu.InvokeConvert
static method -
Core: Added
Impromptu.InvokeConstuctor
static method -
Core: Added
Impromptu.Get\SetIndex
static method -
Core: Suports Syntax for really late binding static methods (
InvokeStaticContext
), generic parameters(InvokeMemberName
), and permissions context (InvokeContext
),. -
Core: Deprecated Call... static methods use
InvokeContext
syntax instead - Core: Fixed bug with proxying arrays
-
mvvm: Can put compile time contract on dynamic properties (gain intellisense) with
ImpromptuViewModel
-
mvvm: Dependancies property on
ImpromptuViewModel
that allows linking properties on dependent properties. -
mvvm:
ImpromptuToString<TTarget>
proxy class allows replacing ofToString
method so that you can bind model objects to view items.
-
Core: Added prototype object initialization syntax based on Clay.
dynamic New # Impromptu.Builder();
99% Compatible with Clay initialization syntax but resulting prototype object isImpromptuDictionary
which is 100x faster than Clay. -
Core:
dynamic New # Impromptu.Builder<T>();
gives basic initialization syntax to work on any object, includingExpandoObject
which is less compatible with Clay syntax but 500x faster than Clay, or even clay objects themselves which can be 100% compatible -
Core: Better Support for Xaml Binding for
ImpromptuDictionary
-
Core: Added
InvokeArg
syntax for extreme late binding support with named arguments. -
Core: Added
[UseNamedArgument]
attribute that can be used on Methods or Method Arguments on an Interface to tell the proxy use the argument name in the binding. -
MVVM:
ImpromptuViewModel
Dynamically does work necessary for binding properties and commands that normally requires lots of boilerplate. -
MVVM:
ImpromptuRelayCommand
extreme late binding relay command.
- Silverlight passes all unit tests
-
ImpromptuDictionary
will also act like a dynamic proxy for anyIDictionary<string,object>
including nestedIDictionary<string,object>
- Added
ImpromptuGet
dynamic proxy that only exposes getters including Funcs as methods (works with anonymous objects). - Added
Impromptu.FastDynamicInvoke(this Delegate del, params object[] args)
runs about 20x faster thanDelegate.DynamicInvoke(params object[] arg)
- All
Impromtu.Invoke
functions leveraging the DLR run faster than reflection in Microsoft.net & Silverlight - Added readable convenience syntax for inline lambdas
Return<T>.Arguments<T1,..>((T1,..)#> code)
andReturnVoid.Arguments<T1,..>((T1,..)#> code)
Added functions to extremely late binding calls.
var result # Impromptu.InvokeMember(target, "name", arg1,...);
Impromptu.InvokeMemberAction(target, "name", arg1,...);
var result # Impromptu.InvokeGet(target, "name");
-
Impromptu.InvokeSet(target, "name", value);
These calls can be used on static or dynamic objects.
- Basic Functionality of
ActLike<Interface>()
Plus some primitive base classes when usingImpromptuInterface.Dynamic;
-
ImpromptuObject
--Similar toDynamicObject
but the expected static return type from the wrapped interface can be queried. -
ImpromptuFactory
-- Functional base class, used to create fluent factories with less boilerplate -
ImpromptuDictionary
-- Similar toExpandoObject
but returns default of the static return type if the property has never been set.