瀏覽代碼

Merge pull request #354 from Reactive-Extensions/NoEventArgsConstraints

Removing checks for EventArgs constraints
Oren Novotny 8 年之前
父節點
當前提交
f9d73145a0

+ 5 - 5
Rx.NET/Source/Directory.build.targets

@@ -6,19 +6,19 @@
   
   <!-- This props all need to be set in targets as they depend on the values set earlier -->
   <PropertyGroup Condition="'$(TargetFramework)' == 'netstandard1.3'">
-    <DefineConstants>$(DefineConstants);NO_EVENTARGS_CONSTRAINT;NO_CODE_COVERAGE_ATTRIBUTE;HAS_WINRT;PREFER_ASYNC;USE_TIMER_SELF_ROOT;HAS_TPL46;NO_REMOTING;NO_SERIALIZABLE;CRIPPLED_REFLECTION</DefineConstants>
+    <DefineConstants>$(DefineConstants);NO_CODE_COVERAGE_ATTRIBUTE;HAS_WINRT;PREFER_ASYNC;USE_TIMER_SELF_ROOT;HAS_TPL46;NO_REMOTING;NO_SERIALIZABLE;CRIPPLED_REFLECTION</DefineConstants>
   </PropertyGroup>
   <PropertyGroup Condition="'$(TargetFramework)' == 'net45'">
-    <DefineConstants>$(DefineConstants);NO_EVENTARGS_CONSTRAINT;HAS_WINRT;PREFER_ASYNC;USE_TIMER_SELF_ROOT;DESKTOPCLR</DefineConstants>
+    <DefineConstants>$(DefineConstants);HAS_WINRT;PREFER_ASYNC;USE_TIMER_SELF_ROOT;DESKTOPCLR</DefineConstants>
   </PropertyGroup>
   <PropertyGroup Condition="'$(TargetFramework)' == 'net46'">
-    <DefineConstants>$(DefineConstants);NO_EVENTARGS_CONSTRAINT;HAS_WINRT;PREFER_ASYNC;USE_TIMER_SELF_ROOT;HAS_TPL46;DESKTOPCLR</DefineConstants>
+    <DefineConstants>$(DefineConstants);HAS_WINRT;PREFER_ASYNC;USE_TIMER_SELF_ROOT;HAS_TPL46;DESKTOPCLR</DefineConstants>
   </PropertyGroup>
   <PropertyGroup Condition="'$(TargetFramework)' == 'uap10.0'">
-    <DefineConstants>$(DefineConstants);NO_EVENTARGS_CONSTRAINT;NO_CODE_COVERAGE_ATTRIBUTE;HAS_WINRT;PREFER_ASYNC;USE_TIMER_SELF_ROOT;HAS_TPL46;NO_REMOTING;NO_SERIALIZABLE;CRIPPLED_REFLECTION;NO_THREAD;WINDOWS</DefineConstants>
+    <DefineConstants>$(DefineConstants);NO_CODE_COVERAGE_ATTRIBUTE;HAS_WINRT;PREFER_ASYNC;USE_TIMER_SELF_ROOT;HAS_TPL46;NO_REMOTING;NO_SERIALIZABLE;CRIPPLED_REFLECTION;NO_THREAD;WINDOWS</DefineConstants>
   </PropertyGroup>
   <PropertyGroup Condition="'$(TargetFramework)' == 'netcoreapp1.0' or '$(TargetFramework)' == 'netcoreapp1.1'">
-    <DefineConstants>$(DefineConstants);NO_EVENTARGS_CONSTRAINT;HAS_WINRT;PREFER_ASYNC;USE_TIMER_SELF_ROOT;HAS_TPL46;NO_REMOTING;NO_SERIALIZABLE;CRIPPLED_REFLECTION</DefineConstants>    
+    <DefineConstants>$(DefineConstants);HAS_WINRT;PREFER_ASYNC;USE_TIMER_SELF_ROOT;HAS_TPL46;NO_REMOTING;NO_SERIALIZABLE;CRIPPLED_REFLECTION</DefineConstants>    
   </PropertyGroup>
   
   <!-- UWP -->

+ 0 - 6
Rx.NET/Source/src/System.Reactive/EventPattern.cs

@@ -11,9 +11,6 @@ namespace System.Reactive
     /// </summary>
     /// <typeparam name="TEventArgs">The type of the event data generated by the event.</typeparam>
     public class EventPattern<TEventArgs> : EventPattern<object, TEventArgs>
-#if !NO_EVENTARGS_CONSTRAINT
-        where TEventArgs : EventArgs
-#endif
     {
         /// <summary>
         /// Creates a new data representation instance of a .NET event invocation with the given sender and event data.
@@ -32,9 +29,6 @@ namespace System.Reactive
     /// <typeparam name="TSender">The type of the sender that raised the event.</typeparam>
     /// <typeparam name="TEventArgs">The type of the event data generated by the event.</typeparam>
     public class EventPattern<TSender, TEventArgs> : IEquatable<EventPattern<TSender, TEventArgs>>, IEventPattern<TSender, TEventArgs>
-#if !NO_EVENTARGS_CONSTRAINT
-        where TEventArgs : EventArgs
-#endif
     {
         /// <summary>
         /// Creates a new data representation instance of a .NET event invocation with the given sender and event data.

+ 0 - 3
Rx.NET/Source/src/System.Reactive/EventPatternSource.cs

@@ -5,9 +5,6 @@
 namespace System.Reactive
 {
     class EventPatternSource<TEventArgs> : EventPatternSourceBase<object, TEventArgs>, IEventPatternSource<TEventArgs>
-#if !NO_EVENTARGS_CONSTRAINT
-        where TEventArgs : EventArgs
-#endif
     {
         public EventPatternSource(IObservable<EventPattern<object, TEventArgs>> source, Action<Action<object, TEventArgs>, /*object,*/ EventPattern<object, TEventArgs>> invokeHandler)
             : base(source, invokeHandler)

+ 0 - 3
Rx.NET/Source/src/System.Reactive/EventPatternSourceBase.cs

@@ -14,9 +14,6 @@ namespace System.Reactive
     /// <typeparam name="TSender">The type of the sender that raises the event.</typeparam>
     /// <typeparam name="TEventArgs">The type of the event data generated by the event.</typeparam>
     public abstract class EventPatternSourceBase<TSender, TEventArgs>
-#if !NO_EVENTARGS_CONSTRAINT
-        where TEventArgs : EventArgs
-#endif
     {
         private readonly IObservable<EventPattern<TSender, TEventArgs>> _source;
         private readonly Dictionary<Delegate, Stack<IDisposable>> _subscriptions;

+ 0 - 3
Rx.NET/Source/src/System.Reactive/IEventPattern.cs

@@ -16,9 +16,6 @@ namespace System.Reactive
     /// This type parameter is covariant. That is, you can use either the type you specified or any type that is more derived. For more information about covariance and contravariance, see Covariance and Contravariance in Generics.
     /// </typeparam>
     public interface IEventPattern<out TSender, out TEventArgs>
-#if !NO_EVENTARGS_CONSTRAINT
-        where TEventArgs : EventArgs
-#endif
     {
         /// <summary>
         /// Gets the sender object that raised the event.

+ 0 - 3
Rx.NET/Source/src/System.Reactive/IEventPatternSource.cs

@@ -9,9 +9,6 @@ namespace System.Reactive
     /// </summary>
     /// <typeparam name="TEventArgs">The type of the event data generated by the event.</typeparam>
     public interface IEventPatternSource<TEventArgs>
-#if !NO_EVENTARGS_CONSTRAINT
-        where TEventArgs : EventArgs
-#endif
     {
         /// <summary>
         /// Event signaling the next element in the data stream.

+ 0 - 3
Rx.NET/Source/src/System.Reactive/Internal/ReflectionUtils.cs

@@ -34,9 +34,6 @@ namespace System.Reactive
         }
 
         public static void GetEventMethods<TSender, TEventArgs>(Type targetType, object target, string eventName, out MethodInfo addMethod, out MethodInfo removeMethod, out Type delegateType, out bool isWinRT)
-#if !NO_EVENTARGS_CONSTRAINT
-            where TEventArgs : EventArgs
-#endif
         {
             var e = default(EventInfo);
 

+ 1 - 29
Rx.NET/Source/src/System.Reactive/Linq/IQueryLanguage.cs

@@ -397,11 +397,7 @@ namespace System.Reactive.Linq
         IEnumerable<TSource> ToEnumerable<TSource>(IObservable<TSource> source);
         IEventSource<Unit> ToEvent(IObservable<Unit> source);
         IEventSource<TSource> ToEvent<TSource>(IObservable<TSource> source);
-#if !NO_EVENTARGS_CONSTRAINT
-        IEventPatternSource<TEventArgs> ToEventPattern<TEventArgs>(IObservable<EventPattern<TEventArgs>> source) where TEventArgs : EventArgs;
-#else
         IEventPatternSource<TEventArgs> ToEventPattern<TEventArgs>(IObservable<EventPattern<TEventArgs>> source);
-#endif
         IObservable<TSource> ToObservable<TSource>(IEnumerable<TSource> source);
         IObservable<TSource> ToObservable<TSource>(IEnumerable<TSource> source, IScheduler scheduler);
 
@@ -453,30 +449,6 @@ namespace System.Reactive.Linq
 
         #region * Events *
 
-#if !NO_EVENTARGS_CONSTRAINT
-        IObservable<EventPattern<EventArgs>> FromEventPattern(Action<EventHandler> addHandler, Action<EventHandler> removeHandler);
-        IObservable<EventPattern<EventArgs>> FromEventPattern(Action<EventHandler> addHandler, Action<EventHandler> removeHandler, IScheduler scheduler);
-        IObservable<EventPattern<TEventArgs>> FromEventPattern<TDelegate, TEventArgs>(Action<TDelegate> addHandler, Action<TDelegate> removeHandler) where TEventArgs : EventArgs;
-        IObservable<EventPattern<TEventArgs>> FromEventPattern<TDelegate, TEventArgs>(Action<TDelegate> addHandler, Action<TDelegate> removeHandler, IScheduler scheduler) where TEventArgs : EventArgs;
-        IObservable<EventPattern<TEventArgs>> FromEventPattern<TDelegate, TEventArgs>(Func<EventHandler<TEventArgs>, TDelegate> conversion, Action<TDelegate> addHandler, Action<TDelegate> removeHandler) where TEventArgs : EventArgs;
-        IObservable<EventPattern<TEventArgs>> FromEventPattern<TDelegate, TEventArgs>(Func<EventHandler<TEventArgs>, TDelegate> conversion, Action<TDelegate> addHandler, Action<TDelegate> removeHandler, IScheduler scheduler) where TEventArgs : EventArgs;
-        IObservable<EventPattern<TEventArgs>> FromEventPattern<TEventArgs>(Action<EventHandler<TEventArgs>> addHandler, Action<EventHandler<TEventArgs>> removeHandler) where TEventArgs : EventArgs;
-        IObservable<EventPattern<TEventArgs>> FromEventPattern<TEventArgs>(Action<EventHandler<TEventArgs>> addHandler, Action<EventHandler<TEventArgs>> removeHandler, IScheduler scheduler) where TEventArgs : EventArgs;
-        IObservable<EventPattern<TSender, TEventArgs>> FromEventPattern<TDelegate, TSender, TEventArgs>(Action<TDelegate> addHandler, Action<TDelegate> removeHandler) where TEventArgs : EventArgs;
-        IObservable<EventPattern<TSender, TEventArgs>> FromEventPattern<TDelegate, TSender, TEventArgs>(Action<TDelegate> addHandler, Action<TDelegate> removeHandler, IScheduler scheduler) where TEventArgs : EventArgs;
-        IObservable<EventPattern<EventArgs>> FromEventPattern(object target, string eventName);
-        IObservable<EventPattern<EventArgs>> FromEventPattern(object target, string eventName, IScheduler scheduler);
-        IObservable<EventPattern<TEventArgs>> FromEventPattern<TEventArgs>(object target, string eventName) where TEventArgs : EventArgs;
-        IObservable<EventPattern<TEventArgs>> FromEventPattern<TEventArgs>(object target, string eventName, IScheduler scheduler) where TEventArgs : EventArgs;
-        IObservable<EventPattern<TSender, TEventArgs>> FromEventPattern<TSender, TEventArgs>(object target, string eventName) where TEventArgs : EventArgs;
-        IObservable<EventPattern<TSender, TEventArgs>> FromEventPattern<TSender, TEventArgs>(object target, string eventName, IScheduler scheduler) where TEventArgs : EventArgs;
-        IObservable<EventPattern<EventArgs>> FromEventPattern(Type type, string eventName);
-        IObservable<EventPattern<EventArgs>> FromEventPattern(Type type, string eventName, IScheduler scheduler);
-        IObservable<EventPattern<TEventArgs>> FromEventPattern<TEventArgs>(Type type, string eventName) where TEventArgs : EventArgs;
-        IObservable<EventPattern<TEventArgs>> FromEventPattern<TEventArgs>(Type type, string eventName, IScheduler scheduler) where TEventArgs : EventArgs;
-        IObservable<EventPattern<TSender, TEventArgs>> FromEventPattern<TSender, TEventArgs>(Type type, string eventName) where TEventArgs : EventArgs;
-        IObservable<EventPattern<TSender, TEventArgs>> FromEventPattern<TSender, TEventArgs>(Type type, string eventName, IScheduler scheduler) where TEventArgs : EventArgs;
-#else
         IObservable<EventPattern<object>> FromEventPattern(Action<EventHandler> addHandler, Action<EventHandler> removeHandler);
         IObservable<EventPattern<object>> FromEventPattern(Action<EventHandler> addHandler, Action<EventHandler> removeHandler, IScheduler scheduler);
         IObservable<EventPattern<TEventArgs>> FromEventPattern<TDelegate, TEventArgs>(Action<TDelegate> addHandler, Action<TDelegate> removeHandler);
@@ -499,7 +471,7 @@ namespace System.Reactive.Linq
         IObservable<EventPattern<TEventArgs>> FromEventPattern<TEventArgs>(Type type, string eventName, IScheduler scheduler);
         IObservable<EventPattern<TSender, TEventArgs>> FromEventPattern<TSender, TEventArgs>(Type type, string eventName);
         IObservable<EventPattern<TSender, TEventArgs>> FromEventPattern<TSender, TEventArgs>(Type type, string eventName, IScheduler scheduler);
-#endif
+
         IObservable<TEventArgs> FromEvent<TDelegate, TEventArgs>(Func<Action<TEventArgs>, TDelegate> conversion, Action<TDelegate> addHandler, Action<TDelegate> removeHandler);
         IObservable<TEventArgs> FromEvent<TDelegate, TEventArgs>(Func<Action<TEventArgs>, TDelegate> conversion, Action<TDelegate> addHandler, Action<TDelegate> removeHandler, IScheduler scheduler);
         IObservable<TEventArgs> FromEvent<TDelegate, TEventArgs>(Action<TDelegate> addHandler, Action<TDelegate> removeHandler);

+ 0 - 3
Rx.NET/Source/src/System.Reactive/Linq/Observable.Conversions.cs

@@ -114,9 +114,6 @@ namespace System.Reactive.Linq
         /// <returns>The event source object.</returns>
         /// <exception cref="ArgumentNullException"><paramref name="source"/> is null.</exception>
         public static IEventPatternSource<TEventArgs> ToEventPattern<TEventArgs>(this IObservable<EventPattern<TEventArgs>> source)
-#if !NO_EVENTARGS_CONSTRAINT
-            where TEventArgs : EventArgs
-#endif
         {
             if (source == null)
                 throw new ArgumentNullException(nameof(source));

+ 0 - 126
Rx.NET/Source/src/System.Reactive/Linq/Observable.Events.cs

@@ -44,17 +44,6 @@ namespace System.Reactive.Linq
         /// </para>
         /// </remarks>
         /// <seealso cref="Observable.ToEventPattern"/>
-#if !NO_EVENTARGS_CONSTRAINT
-        public static IObservable<EventPattern<EventArgs>> FromEventPattern(Action<EventHandler> addHandler, Action<EventHandler> removeHandler)
-        {
-            if (addHandler == null)
-                throw new ArgumentNullException(nameof(addHandler));
-            if (removeHandler == null)
-                throw new ArgumentNullException(nameof(removeHandler));
-
-            return s_impl.FromEventPattern(addHandler, removeHandler);
-        }
-#else
         public static IObservable<EventPattern<object>> FromEventPattern(Action<EventHandler> addHandler, Action<EventHandler> removeHandler)
         {
             if (addHandler == null)
@@ -64,7 +53,6 @@ namespace System.Reactive.Linq
 
             return s_impl.FromEventPattern(addHandler, removeHandler);
         }
-#endif
 
         /// <summary>
         /// Converts a .NET event, conforming to the standard .NET event pattern based on <see cref="EventHandler"/>, to an observable sequence.
@@ -92,19 +80,6 @@ namespace System.Reactive.Linq
         /// </para>
         /// </remarks>
         /// <seealso cref="Observable.ToEventPattern"/>
-#if !NO_EVENTARGS_CONSTRAINT
-        public static IObservable<EventPattern<EventArgs>> FromEventPattern(Action<EventHandler> addHandler, Action<EventHandler> removeHandler, IScheduler scheduler)
-        {
-            if (addHandler == null)
-                throw new ArgumentNullException(nameof(addHandler));
-            if (removeHandler == null)
-                throw new ArgumentNullException(nameof(removeHandler));
-            if (scheduler == null)
-                throw new ArgumentNullException(nameof(scheduler));
-
-            return s_impl.FromEventPattern(addHandler, removeHandler, scheduler);
-        }
-#else
         public static IObservable<EventPattern<object>> FromEventPattern(Action<EventHandler> addHandler, Action<EventHandler> removeHandler, IScheduler scheduler)
         {
             if (addHandler == null)
@@ -116,7 +91,6 @@ namespace System.Reactive.Linq
 
             return s_impl.FromEventPattern(addHandler, removeHandler, scheduler);
         }
-#endif
 
         #endregion
 
@@ -154,9 +128,6 @@ namespace System.Reactive.Linq
         /// </remarks>
         /// <seealso cref="Observable.ToEventPattern"/>
         public static IObservable<EventPattern<TEventArgs>> FromEventPattern<TDelegate, TEventArgs>(Action<TDelegate> addHandler, Action<TDelegate> removeHandler)
-#if !NO_EVENTARGS_CONSTRAINT
-            where TEventArgs : EventArgs
-#endif
         {
             if (addHandler == null)
                 throw new ArgumentNullException(nameof(addHandler));
@@ -195,9 +166,6 @@ namespace System.Reactive.Linq
         /// </remarks>
         /// <seealso cref="Observable.ToEventPattern"/>
         public static IObservable<EventPattern<TEventArgs>> FromEventPattern<TDelegate, TEventArgs>(Action<TDelegate> addHandler, Action<TDelegate> removeHandler, IScheduler scheduler)
-#if !NO_EVENTARGS_CONSTRAINT
-            where TEventArgs : EventArgs
-#endif
         {
             if (addHandler == null)
                 throw new ArgumentNullException(nameof(addHandler));
@@ -242,9 +210,6 @@ namespace System.Reactive.Linq
         /// </remarks>
         /// <seealso cref="Observable.ToEventPattern"/>
         public static IObservable<EventPattern<TEventArgs>> FromEventPattern<TDelegate, TEventArgs>(Func<EventHandler<TEventArgs>, TDelegate> conversion, Action<TDelegate> addHandler, Action<TDelegate> removeHandler)
-#if !NO_EVENTARGS_CONSTRAINT
-            where TEventArgs : EventArgs
-#endif
         {
             if (conversion == null)
                 throw new ArgumentNullException(nameof(conversion));
@@ -286,9 +251,6 @@ namespace System.Reactive.Linq
         /// </remarks>
         /// <seealso cref="Observable.ToEventPattern"/>
         public static IObservable<EventPattern<TEventArgs>> FromEventPattern<TDelegate, TEventArgs>(Func<EventHandler<TEventArgs>, TDelegate> conversion, Action<TDelegate> addHandler, Action<TDelegate> removeHandler, IScheduler scheduler)
-#if !NO_EVENTARGS_CONSTRAINT
-            where TEventArgs : EventArgs
-#endif
         {
             if (conversion == null)
                 throw new ArgumentNullException(nameof(conversion));
@@ -335,9 +297,6 @@ namespace System.Reactive.Linq
         /// </remarks>
         /// <seealso cref="Observable.ToEventPattern"/>
         public static IObservable<EventPattern<TSender, TEventArgs>> FromEventPattern<TDelegate, TSender, TEventArgs>(Action<TDelegate> addHandler, Action<TDelegate> removeHandler)
-#if !NO_EVENTARGS_CONSTRAINT
-            where TEventArgs : EventArgs
-#endif
         {
             if (addHandler == null)
                 throw new ArgumentNullException(nameof(addHandler));
@@ -377,9 +336,6 @@ namespace System.Reactive.Linq
         /// </remarks>
         /// <seealso cref="Observable.ToEventPattern"/>
         public static IObservable<EventPattern<TSender, TEventArgs>> FromEventPattern<TDelegate, TSender, TEventArgs>(Action<TDelegate> addHandler, Action<TDelegate> removeHandler, IScheduler scheduler)
-#if !NO_EVENTARGS_CONSTRAINT
-            where TEventArgs : EventArgs
-#endif
         {
             if (addHandler == null)
                 throw new ArgumentNullException(nameof(addHandler));
@@ -425,9 +381,6 @@ namespace System.Reactive.Linq
         /// </remarks>
         /// <seealso cref="Observable.ToEventPattern"/>
         public static IObservable<EventPattern<TEventArgs>> FromEventPattern<TEventArgs>(Action<EventHandler<TEventArgs>> addHandler, Action<EventHandler<TEventArgs>> removeHandler)
-#if !NO_EVENTARGS_CONSTRAINT
-            where TEventArgs : EventArgs
-#endif
         {
             if (addHandler == null)
                 throw new ArgumentNullException(nameof(addHandler));
@@ -464,9 +417,6 @@ namespace System.Reactive.Linq
         /// </remarks>
         /// <seealso cref="Observable.ToEventPattern"/>
         public static IObservable<EventPattern<TEventArgs>> FromEventPattern<TEventArgs>(Action<EventHandler<TEventArgs>> addHandler, Action<EventHandler<TEventArgs>> removeHandler, IScheduler scheduler)
-#if !NO_EVENTARGS_CONSTRAINT
-            where TEventArgs : EventArgs
-#endif
         {
             if (addHandler == null)
                 throw new ArgumentNullException(nameof(addHandler));
@@ -517,17 +467,6 @@ namespace System.Reactive.Linq
         /// </para>
         /// </remarks>
         /// <seealso cref="Observable.ToEventPattern"/>
-#if !NO_EVENTARGS_CONSTRAINT
-        public static IObservable<EventPattern<EventArgs>> FromEventPattern(object target, string eventName)
-        {
-            if (target == null)
-                throw new ArgumentNullException(nameof(target));
-            if (eventName == null)
-                throw new ArgumentNullException(nameof(eventName));
-
-            return s_impl.FromEventPattern(target, eventName);
-        }
-#else
         public static IObservable<EventPattern<object>> FromEventPattern(object target, string eventName)
         {
             if (target == null)
@@ -537,7 +476,6 @@ namespace System.Reactive.Linq
 
             return s_impl.FromEventPattern(target, eventName);
         }
-#endif
 
         /// <summary>
         /// Converts an instance .NET event, conforming to the standard .NET event pattern with an <see cref="EventArgs"/> parameter, to an observable sequence.
@@ -567,19 +505,6 @@ namespace System.Reactive.Linq
         /// </para>
         /// </remarks>
         /// <seealso cref="Observable.ToEventPattern"/>
-#if !NO_EVENTARGS_CONSTRAINT
-        public static IObservable<EventPattern<EventArgs>> FromEventPattern(object target, string eventName, IScheduler scheduler)
-        {
-            if (target == null)
-                throw new ArgumentNullException(nameof(target));
-            if (eventName == null)
-                throw new ArgumentNullException(nameof(eventName));
-            if (scheduler == null)
-                throw new ArgumentNullException(nameof(scheduler));
-
-            return s_impl.FromEventPattern(target, eventName, scheduler);
-        }
-#else
         public static IObservable<EventPattern<object>> FromEventPattern(object target, string eventName, IScheduler scheduler)
         {
             if (target == null)
@@ -591,7 +516,6 @@ namespace System.Reactive.Linq
             
             return s_impl.FromEventPattern(target, eventName, scheduler);
         }
-#endif
 
         /// <summary>
         /// Converts an instance .NET event, conforming to the standard .NET event pattern with strongly typed event arguments, to an observable sequence.
@@ -626,9 +550,6 @@ namespace System.Reactive.Linq
         /// </remarks>
         /// <seealso cref="Observable.ToEventPattern"/>
         public static IObservable<EventPattern<TEventArgs>> FromEventPattern<TEventArgs>(object target, string eventName)
-#if !NO_EVENTARGS_CONSTRAINT
-            where TEventArgs : EventArgs
-#endif
         {
             if (target == null)
                 throw new ArgumentNullException(nameof(target));
@@ -668,9 +589,6 @@ namespace System.Reactive.Linq
         /// </remarks>
         /// <seealso cref="Observable.ToEventPattern"/>
         public static IObservable<EventPattern<TEventArgs>> FromEventPattern<TEventArgs>(object target, string eventName, IScheduler scheduler)
-#if !NO_EVENTARGS_CONSTRAINT
-            where TEventArgs : EventArgs
-#endif
         {
             if (target == null)
                 throw new ArgumentNullException(nameof(target));
@@ -716,9 +634,6 @@ namespace System.Reactive.Linq
         /// </remarks>
         /// <seealso cref="Observable.ToEventPattern"/>
         public static IObservable<EventPattern<TSender, TEventArgs>> FromEventPattern<TSender, TEventArgs>(object target, string eventName)
-#if !NO_EVENTARGS_CONSTRAINT
-            where TEventArgs : EventArgs
-#endif
         {
             if (target == null)
                 throw new ArgumentNullException(nameof(target));
@@ -759,9 +674,6 @@ namespace System.Reactive.Linq
         /// </remarks>
         /// <seealso cref="Observable.ToEventPattern"/>
         public static IObservable<EventPattern<TSender, TEventArgs>> FromEventPattern<TSender, TEventArgs>(object target, string eventName, IScheduler scheduler)
-#if !NO_EVENTARGS_CONSTRAINT
-            where TEventArgs : EventArgs
-#endif
         {
             if (target == null)
                 throw new ArgumentNullException(nameof(target));
@@ -808,17 +720,6 @@ namespace System.Reactive.Linq
         /// </para>
         /// </remarks>
         /// <seealso cref="Observable.ToEventPattern"/>
-#if !NO_EVENTARGS_CONSTRAINT
-        public static IObservable<EventPattern<EventArgs>> FromEventPattern(Type type, string eventName)
-        {
-            if (type == null)
-                throw new ArgumentNullException(nameof(type));
-            if (eventName == null)
-                throw new ArgumentNullException(nameof(eventName));
-
-            return s_impl.FromEventPattern(type, eventName);
-        }
-#else
         public static IObservable<EventPattern<object>> FromEventPattern(Type type, string eventName)
         {
             if (type == null)
@@ -828,7 +729,6 @@ namespace System.Reactive.Linq
 
             return s_impl.FromEventPattern(type, eventName);
         }
-#endif
 
         /// <summary>
         /// Converts a static .NET event, conforming to the standard .NET event pattern with an <see cref="EventArgs"/> parameter, to an observable sequence.
@@ -858,19 +758,6 @@ namespace System.Reactive.Linq
         /// </para>
         /// </remarks>
         /// <seealso cref="Observable.ToEventPattern"/>
-#if !NO_EVENTARGS_CONSTRAINT
-        public static IObservable<EventPattern<EventArgs>> FromEventPattern(Type type, string eventName, IScheduler scheduler)
-        {
-            if (type == null)
-                throw new ArgumentNullException(nameof(type));
-            if (eventName == null)
-                throw new ArgumentNullException(nameof(eventName));
-            if (scheduler == null)
-                throw new ArgumentNullException(nameof(scheduler));
-
-            return s_impl.FromEventPattern(type, eventName, scheduler);
-        }
-#else
         public static IObservable<EventPattern<object>> FromEventPattern(Type type, string eventName, IScheduler scheduler)
         {
             if (type == null)
@@ -882,7 +769,6 @@ namespace System.Reactive.Linq
 
             return s_impl.FromEventPattern(type, eventName, scheduler);
         }
-#endif
 
         /// <summary>
         /// Converts a static .NET event, conforming to the standard .NET event pattern with strongly typed event arguments, to an observable sequence.
@@ -917,9 +803,6 @@ namespace System.Reactive.Linq
         /// </remarks>
         /// <seealso cref="Observable.ToEventPattern"/>
         public static IObservable<EventPattern<TEventArgs>> FromEventPattern<TEventArgs>(Type type, string eventName)
-#if !NO_EVENTARGS_CONSTRAINT
-            where TEventArgs : EventArgs
-#endif
         {
             if (type == null)
                 throw new ArgumentNullException(nameof(type));
@@ -959,9 +842,6 @@ namespace System.Reactive.Linq
         /// </remarks>
         /// <seealso cref="Observable.ToEventPattern"/>
         public static IObservable<EventPattern<TEventArgs>> FromEventPattern<TEventArgs>(Type type, string eventName, IScheduler scheduler)
-#if !NO_EVENTARGS_CONSTRAINT
-            where TEventArgs : EventArgs
-#endif
         {
             if (type == null)
                 throw new ArgumentNullException(nameof(type));
@@ -1007,9 +887,6 @@ namespace System.Reactive.Linq
         /// </remarks>
         /// <seealso cref="Observable.ToEventPattern"/>
         public static IObservable<EventPattern<TSender, TEventArgs>> FromEventPattern<TSender, TEventArgs>(Type type, string eventName)
-#if !NO_EVENTARGS_CONSTRAINT
-            where TEventArgs : EventArgs
-#endif
         {
             if (type == null)
                 throw new ArgumentNullException(nameof(type));
@@ -1050,9 +927,6 @@ namespace System.Reactive.Linq
         /// </remarks>
         /// <seealso cref="Observable.ToEventPattern"/>
         public static IObservable<EventPattern<TSender, TEventArgs>> FromEventPattern<TSender, TEventArgs>(Type type, string eventName, IScheduler scheduler)
-#if !NO_EVENTARGS_CONSTRAINT
-            where TEventArgs : EventArgs
-#endif
         {
             if (type == null)
                 throw new ArgumentNullException(nameof(type));

+ 0 - 6
Rx.NET/Source/src/System.Reactive/Linq/Observable/FromEventPattern.cs

@@ -19,9 +19,6 @@ namespace System.Reactive.Linq.ObservableImpl
     class FromEventPattern
     {
         public class Impl<TDelegate, TEventArgs> : ClassicEventProducer<TDelegate, EventPattern<TEventArgs>>
-#if !NO_EVENTARGS_CONSTRAINT
-            where TEventArgs : EventArgs
-#endif
         {
             private readonly Func<EventHandler<TEventArgs>, TDelegate> _conversion;
 
@@ -55,9 +52,6 @@ namespace System.Reactive.Linq.ObservableImpl
         }
 
         public class Impl<TDelegate, TSender, TEventArgs> : ClassicEventProducer<TDelegate, EventPattern<TSender, TEventArgs>>
-#if !NO_EVENTARGS_CONSTRAINT
-            where TEventArgs : EventArgs
-#endif
         {
             public Impl(Action<TDelegate> addHandler, Action<TDelegate> removeHandler, IScheduler scheduler)
                 : base(addHandler, removeHandler, scheduler)

+ 0 - 398
Rx.NET/Source/src/System.Reactive/Linq/Qbservable.Generated.cs

@@ -5519,62 +5519,6 @@ namespace System.Reactive.Linq
             );
         }
         
-#if !NO_EVENTARGS_CONSTRAINT
-        /// <summary>
-        /// Converts a .NET event, conforming to the standard .NET event pattern based on <see cref="EventHandler" />, to an observable sequence.
-        /// Each event invocation is surfaced through an OnNext message in the resulting sequence.
-        /// For conversion of events that don't conform to the standard .NET event pattern, use any of the FromEvent overloads instead.
-        /// </summary>
-        /// <param name="provider">Query provider used to construct the <see cref="IQbservable{T}"/> data source.</param>
-        /// <param name="addHandler">Action that attaches the given event handler to the underlying .NET event.</param>
-        /// <param name="removeHandler">Action that detaches the given event handler from the underlying .NET event.</param>
-        /// <returns>The observable sequence that contains data representations of invocations of the underlying .NET event.</returns>
-        /// <exception cref="ArgumentNullException">
-        /// <paramref name="addHandler" /> or <paramref name="removeHandler" /> is null.</exception>
-        /// <remarks>
-        /// <para>
-        /// Add and remove handler invocations are made whenever the number of observers grows beyond zero.
-        /// As such, an event handler may be shared by multiple simultaneously active observers, using a subject for multicasting.
-        /// </para>
-        /// <para>
-        /// The current <see cref="Threading.SynchronizationContext" /> is captured during the call to FromEventPattern, and is used to post add and remove handler invocations.
-        /// This behavior ensures add and remove handler operations for thread-affine events are accessed from the same context, as required by some UI frameworks.
-        /// </para>
-        /// <para>
-        /// If no SynchronizationContext is present at the point of calling FromEventPattern, add and remove handler invocations are made synchronously on the thread
-        /// making the Subscribe or Dispose call, respectively.
-        /// </para>
-        /// <para>
-        /// It's recommended to lift FromEventPattern calls outside event stream query expressions due to the free-threaded nature of Reactive Extensions. Doing so
-        /// makes the captured SynchronizationContext predictable. This best practice also reduces clutter of bridging code inside queries, making the query expressions
-        /// more concise and easier to understand.
-        /// </para>
-        /// </remarks>
-        /// <seealso cref="Observable.ToEventPattern{TEventArgs}(IObservable{EventPattern{TEventArgs}})" />
-        public static IQbservable<EventPattern<EventArgs>> FromEventPattern(this IQbservableProvider provider, Expression<Action<EventHandler>> addHandler, Expression<Action<EventHandler>> removeHandler)
-        {
-            if (provider == null)
-                throw new ArgumentNullException(nameof(provider));
-            if (addHandler == null)
-                throw new ArgumentNullException(nameof(addHandler));
-            if (removeHandler == null)
-                throw new ArgumentNullException(nameof(removeHandler));
-            
-            return provider.CreateQuery<EventPattern<EventArgs>>(
-                Expression.Call(
-                    null,
-#if CRIPPLED_REFLECTION
-                    InfoOf(() => Qbservable.FromEventPattern(default(IQbservableProvider), default(Expression<Action<EventHandler>>), default(Expression<Action<EventHandler>>))),
-#else
-                    (MethodInfo)MethodInfo.GetCurrentMethod(),
-#endif
-                    Expression.Constant(provider, typeof(IQbservableProvider)),
-                    addHandler,
-                    removeHandler
-                )
-            );
-        }
-#else
         /// <summary>
         /// Converts a .NET event, conforming to the standard .NET event pattern based on <see cref="EventHandler" />, to an observable sequence.
         /// Each event invocation is surfaced through an OnNext message in the resulting sequence.
@@ -5629,64 +5573,7 @@ namespace System.Reactive.Linq
                 )
             );
         }
-#endif
         
-#if !NO_EVENTARGS_CONSTRAINT
-        /// <summary>
-        /// Converts a .NET event, conforming to the standard .NET event pattern based on <see cref="EventHandler" />, to an observable sequence.
-        /// Each event invocation is surfaced through an OnNext message in the resulting sequence.
-        /// For conversion of events that don't conform to the standard .NET event pattern, use any of the FromEvent overloads instead.
-        /// </summary>
-        /// <param name="provider">Query provider used to construct the <see cref="IQbservable{T}"/> data source.</param>
-        /// <param name="addHandler">Action that attaches the given event handler to the underlying .NET event.</param>
-        /// <param name="removeHandler">Action that detaches the given event handler from the underlying .NET event.</param>
-        /// <param name="scheduler">The scheduler to run the add and remove event handler logic on.</param>
-        /// <returns>The observable sequence that contains data representations of invocations of the underlying .NET event.</returns>
-        /// <exception cref="ArgumentNullException">
-        /// <paramref name="addHandler" /> or <paramref name="removeHandler" /> or <paramref name="scheduler" /> is null.</exception>
-        /// <remarks>
-        /// <para>
-        /// Add and remove handler invocations are made whenever the number of observers grows beyond zero.
-        /// As such, an event handler may be shared by multiple simultaneously active observers, using a subject for multicasting.
-        /// </para>
-        /// <para>
-        /// Add and remove handler invocations are run on the specified scheduler. This behavior allows add and remove handler operations for thread-affine events to be
-        /// accessed from the same context, as required by some UI frameworks.
-        /// </para>
-        /// <para>
-        /// It's recommended to lift FromEventPattern calls outside event stream query expressions. This best practice reduces clutter of bridging code inside queries,
-        /// making the query expressions more concise and easier to understand. This has additional benefits for overloads of FromEventPattern that omit the IScheduler
-        /// parameter. For more information, see the remarks section on those overloads.
-        /// </para>
-        /// </remarks>
-        /// <seealso cref="Observable.ToEventPattern{TEventArgs}(IObservable{EventPattern{TEventArgs}})" />
-        public static IQbservable<EventPattern<EventArgs>> FromEventPattern(this IQbservableProvider provider, Expression<Action<EventHandler>> addHandler, Expression<Action<EventHandler>> removeHandler, IScheduler scheduler)
-        {
-            if (provider == null)
-                throw new ArgumentNullException(nameof(provider));
-            if (addHandler == null)
-                throw new ArgumentNullException(nameof(addHandler));
-            if (removeHandler == null)
-                throw new ArgumentNullException(nameof(removeHandler));
-            if (scheduler == null)
-                throw new ArgumentNullException(nameof(scheduler));
-            
-            return provider.CreateQuery<EventPattern<EventArgs>>(
-                Expression.Call(
-                    null,
-#if CRIPPLED_REFLECTION
-                    InfoOf(() => Qbservable.FromEventPattern(default(IQbservableProvider), default(Expression<Action<EventHandler>>), default(Expression<Action<EventHandler>>), default(IScheduler))),
-#else
-                    (MethodInfo)MethodInfo.GetCurrentMethod(),
-#endif
-                    Expression.Constant(provider, typeof(IQbservableProvider)),
-                    addHandler,
-                    removeHandler,
-                    Expression.Constant(scheduler, typeof(IScheduler))
-                )
-            );
-        }
-#else
         /// <summary>
         /// Converts a .NET event, conforming to the standard .NET event pattern based on <see cref="EventHandler" />, to an observable sequence.
         /// Each event invocation is surfaced through an OnNext message in the resulting sequence.
@@ -5741,66 +5628,7 @@ namespace System.Reactive.Linq
                 )
             );
         }
-#endif
         
-#if !NO_EVENTARGS_CONSTRAINT
-        /// <summary>
-        /// Converts an instance .NET event, conforming to the standard .NET event pattern with an <see cref="EventArgs" /> parameter, to an observable sequence.
-        /// Each event invocation is surfaced through an OnNext message in the resulting sequence.
-        /// Reflection is used to discover the event based on the target object type and the specified event name.
-        /// For conversion of events that don't conform to the standard .NET event pattern, use any of the FromEvent overloads instead.
-        /// </summary>
-        /// <param name="provider">Query provider used to construct the <see cref="IQbservable{T}"/> data source.</param>
-        /// <param name="target">Object instance that exposes the event to convert.</param>
-        /// <param name="eventName">Name of the event to convert.</param>
-        /// <returns>The observable sequence that contains data representations of invocations of the underlying .NET event.</returns>
-        /// <exception cref="ArgumentNullException">
-        /// <paramref name="target" /> or <paramref name="eventName" /> is null.</exception>
-        /// <exception cref="InvalidOperationException">The event could not be found. -or- The event does not conform to the standard .NET event pattern.</exception>
-        /// <remarks>
-        /// <para>
-        /// Add and remove handler invocations are made whenever the number of observers grows beyond zero.
-        /// As such, an event handler may be shared by multiple simultaneously active observers, using a subject for multicasting.
-        /// </para>
-        /// <para>
-        /// The current <see cref="Threading.SynchronizationContext" /> is captured during the call to FromEventPattern, and is used to post add and remove handler invocations.
-        /// This behavior ensures add and remove handler operations for thread-affine events are accessed from the same context, as required by some UI frameworks.
-        /// </para>
-        /// <para>
-        /// If no SynchronizationContext is present at the point of calling FromEventPattern, add and remove handler invocations are made synchronously on the thread
-        /// making the Subscribe or Dispose call, respectively.
-        /// </para>
-        /// <para>
-        /// It's recommended to lift FromEventPattern calls outside event stream query expressions due to the free-threaded nature of Reactive Extensions. Doing so
-        /// makes the captured SynchronizationContext predictable. This best practice also reduces clutter of bridging code inside queries, making the query expressions
-        /// more concise and easier to understand.
-        /// </para>
-        /// </remarks>
-        /// <seealso cref="Observable.ToEventPattern{TEventArgs}(IObservable{EventPattern{TEventArgs}})" />
-        public static IQbservable<EventPattern<EventArgs>> FromEventPattern(this IQbservableProvider provider, object target, string eventName)
-        {
-            if (provider == null)
-                throw new ArgumentNullException(nameof(provider));
-            if (target == null)
-                throw new ArgumentNullException(nameof(target));
-            if (eventName == null)
-                throw new ArgumentNullException(nameof(eventName));
-            
-            return provider.CreateQuery<EventPattern<EventArgs>>(
-                Expression.Call(
-                    null,
-#if CRIPPLED_REFLECTION
-                    InfoOf(() => Qbservable.FromEventPattern(default(IQbservableProvider), default(object), default(string))),
-#else
-                    (MethodInfo)MethodInfo.GetCurrentMethod(),
-#endif
-                    Expression.Constant(provider, typeof(IQbservableProvider)),
-                    Expression.Constant(target, typeof(object)),
-                    Expression.Constant(eventName, typeof(string))
-                )
-            );
-        }
-#else
         /// <summary>
         /// Converts an instance .NET event, conforming to the standard .NET event pattern with an <see cref="EventArgs" /> parameter, to an observable sequence.
         /// Each event invocation is surfaced through an OnNext message in the resulting sequence.
@@ -5857,66 +5685,7 @@ namespace System.Reactive.Linq
                 )
             );
         }
-#endif
         
-#if !NO_EVENTARGS_CONSTRAINT
-        /// <summary>
-        /// Converts an instance .NET event, conforming to the standard .NET event pattern with an <see cref="EventArgs" /> parameter, to an observable sequence.
-        /// Each event invocation is surfaced through an OnNext message in the resulting sequence.
-        /// Reflection is used to discover the event based on the target object type and the specified event name.
-        /// For conversion of events that don't conform to the standard .NET event pattern, use any of the FromEvent overloads instead.
-        /// </summary>
-        /// <param name="provider">Query provider used to construct the <see cref="IQbservable{T}"/> data source.</param>
-        /// <param name="target">Object instance that exposes the event to convert.</param>
-        /// <param name="eventName">Name of the event to convert.</param>
-        /// <param name="scheduler">The scheduler to run the add and remove event handler logic on.</param>
-        /// <returns>The observable sequence that contains data representations of invocations of the underlying .NET event.</returns>
-        /// <exception cref="ArgumentNullException">
-        /// <paramref name="target" /> or <paramref name="eventName" /> or <paramref name="scheduler" /> is null.</exception>
-        /// <exception cref="InvalidOperationException">The event could not be found. -or- The event does not conform to the standard .NET event pattern.</exception>
-        /// <remarks>
-        /// <para>
-        /// Add and remove handler invocations are made whenever the number of observers grows beyond zero.
-        /// As such, an event handler may be shared by multiple simultaneously active observers, using a subject for multicasting.
-        /// </para>
-        /// <para>
-        /// Add and remove handler invocations are run on the specified scheduler. This behavior allows add and remove handler operations for thread-affine events to be
-        /// accessed from the same context, as required by some UI frameworks.
-        /// </para>
-        /// <para>
-        /// It's recommended to lift FromEventPattern calls outside event stream query expressions. This best practice reduces clutter of bridging code inside queries,
-        /// making the query expressions more concise and easier to understand. This has additional benefits for overloads of FromEventPattern that omit the IScheduler
-        /// parameter. For more information, see the remarks section on those overloads.
-        /// </para>
-        /// </remarks>
-        /// <seealso cref="Observable.ToEventPattern{TEventArgs}(IObservable{EventPattern{TEventArgs}})" />
-        public static IQbservable<EventPattern<EventArgs>> FromEventPattern(this IQbservableProvider provider, object target, string eventName, IScheduler scheduler)
-        {
-            if (provider == null)
-                throw new ArgumentNullException(nameof(provider));
-            if (target == null)
-                throw new ArgumentNullException(nameof(target));
-            if (eventName == null)
-                throw new ArgumentNullException(nameof(eventName));
-            if (scheduler == null)
-                throw new ArgumentNullException(nameof(scheduler));
-            
-            return provider.CreateQuery<EventPattern<EventArgs>>(
-                Expression.Call(
-                    null,
-#if CRIPPLED_REFLECTION
-                    InfoOf(() => Qbservable.FromEventPattern(default(IQbservableProvider), default(object), default(string), default(IScheduler))),
-#else
-                    (MethodInfo)MethodInfo.GetCurrentMethod(),
-#endif
-                    Expression.Constant(provider, typeof(IQbservableProvider)),
-                    Expression.Constant(target, typeof(object)),
-                    Expression.Constant(eventName, typeof(string)),
-                    Expression.Constant(scheduler, typeof(IScheduler))
-                )
-            );
-        }
-#else
         /// <summary>
         /// Converts an instance .NET event, conforming to the standard .NET event pattern with an <see cref="EventArgs" /> parameter, to an observable sequence.
         /// Each event invocation is surfaced through an OnNext message in the resulting sequence.
@@ -5973,66 +5742,7 @@ namespace System.Reactive.Linq
                 )
             );
         }
-#endif
         
-#if !NO_EVENTARGS_CONSTRAINT
-        /// <summary>
-        /// Converts a static .NET event, conforming to the standard .NET event pattern with an <see cref="EventArgs" /> parameter, to an observable sequence.
-        /// Each event invocation is surfaced through an OnNext message in the resulting sequence.
-        /// Reflection is used to discover the event based on the specified type and the specified event name.
-        /// For conversion of events that don't conform to the standard .NET event pattern, use any of the FromEvent overloads instead.
-        /// </summary>
-        /// <param name="provider">Query provider used to construct the <see cref="IQbservable{T}"/> data source.</param>
-        /// <param name="type">Type that exposes the static event to convert.</param>
-        /// <param name="eventName">Name of the event to convert.</param>
-        /// <returns>The observable sequence that contains data representations of invocations of the underlying .NET event.</returns>
-        /// <exception cref="ArgumentNullException">
-        /// <paramref name="type" /> or <paramref name="eventName" /> is null.</exception>
-        /// <exception cref="InvalidOperationException">The event could not be found. -or- The event does not conform to the standard .NET event pattern.</exception>
-        /// <remarks>
-        /// <para>
-        /// Add and remove handler invocations are made whenever the number of observers grows beyond zero.
-        /// As such, an event handler may be shared by multiple simultaneously active observers, using a subject for multicasting.
-        /// </para>
-        /// <para>
-        /// The current <see cref="Threading.SynchronizationContext" /> is captured during the call to FromEventPattern, and is used to post add and remove handler invocations.
-        /// This behavior ensures add and remove handler operations for thread-affine events are accessed from the same context, as required by some UI frameworks.
-        /// </para>
-        /// <para>
-        /// If no SynchronizationContext is present at the point of calling FromEventPattern, add and remove handler invocations are made synchronously on the thread
-        /// making the Subscribe or Dispose call, respectively.
-        /// </para>
-        /// <para>
-        /// It's recommended to lift FromEventPattern calls outside event stream query expressions due to the free-threaded nature of Reactive Extensions. Doing so
-        /// makes the captured SynchronizationContext predictable. This best practice also reduces clutter of bridging code inside queries, making the query expressions
-        /// more concise and easier to understand.
-        /// </para>
-        /// </remarks>
-        /// <seealso cref="Observable.ToEventPattern{TEventArgs}(IObservable{EventPattern{TEventArgs}})" />
-        public static IQbservable<EventPattern<EventArgs>> FromEventPattern(this IQbservableProvider provider, Type type, string eventName)
-        {
-            if (provider == null)
-                throw new ArgumentNullException(nameof(provider));
-            if (type == null)
-                throw new ArgumentNullException(nameof(type));
-            if (eventName == null)
-                throw new ArgumentNullException(nameof(eventName));
-            
-            return provider.CreateQuery<EventPattern<EventArgs>>(
-                Expression.Call(
-                    null,
-#if CRIPPLED_REFLECTION
-                    InfoOf(() => Qbservable.FromEventPattern(default(IQbservableProvider), default(Type), default(string))),
-#else
-                    (MethodInfo)MethodInfo.GetCurrentMethod(),
-#endif
-                    Expression.Constant(provider, typeof(IQbservableProvider)),
-                    Expression.Constant(type, typeof(Type)),
-                    Expression.Constant(eventName, typeof(string))
-                )
-            );
-        }
-#else
         /// <summary>
         /// Converts a static .NET event, conforming to the standard .NET event pattern with an <see cref="EventArgs" /> parameter, to an observable sequence.
         /// Each event invocation is surfaced through an OnNext message in the resulting sequence.
@@ -6089,66 +5799,7 @@ namespace System.Reactive.Linq
                 )
             );
         }
-#endif
         
-#if !NO_EVENTARGS_CONSTRAINT
-        /// <summary>
-        /// Converts a static .NET event, conforming to the standard .NET event pattern with an <see cref="EventArgs" /> parameter, to an observable sequence.
-        /// Each event invocation is surfaced through an OnNext message in the resulting sequence.
-        /// Reflection is used to discover the event based on the specified type and the specified event name.
-        /// For conversion of events that don't conform to the standard .NET event pattern, use any of the FromEvent overloads instead.
-        /// </summary>
-        /// <param name="provider">Query provider used to construct the <see cref="IQbservable{T}"/> data source.</param>
-        /// <param name="type">Type that exposes the static event to convert.</param>
-        /// <param name="eventName">Name of the event to convert.</param>
-        /// <param name="scheduler">The scheduler to run the add and remove event handler logic on.</param>
-        /// <returns>The observable sequence that contains data representations of invocations of the underlying .NET event.</returns>
-        /// <exception cref="ArgumentNullException">
-        /// <paramref name="type" /> or <paramref name="eventName" /> or <paramref name="scheduler" /> is null.</exception>
-        /// <exception cref="InvalidOperationException">The event could not be found. -or- The event does not conform to the standard .NET event pattern.</exception>
-        /// <remarks>
-        /// <para>
-        /// Add and remove handler invocations are made whenever the number of observers grows beyond zero.
-        /// As such, an event handler may be shared by multiple simultaneously active observers, using a subject for multicasting.
-        /// </para>
-        /// <para>
-        /// Add and remove handler invocations are run on the specified scheduler. This behavior allows add and remove handler operations for thread-affine events to be
-        /// accessed from the same context, as required by some UI frameworks.
-        /// </para>
-        /// <para>
-        /// It's recommended to lift FromEventPattern calls outside event stream query expressions. This best practice reduces clutter of bridging code inside queries,
-        /// making the query expressions more concise and easier to understand. This has additional benefits for overloads of FromEventPattern that omit the IScheduler
-        /// parameter. For more information, see the remarks section on those overloads.
-        /// </para>
-        /// </remarks>
-        /// <seealso cref="Observable.ToEventPattern{TEventArgs}(IObservable{EventPattern{TEventArgs}})" />
-        public static IQbservable<EventPattern<EventArgs>> FromEventPattern(this IQbservableProvider provider, Type type, string eventName, IScheduler scheduler)
-        {
-            if (provider == null)
-                throw new ArgumentNullException(nameof(provider));
-            if (type == null)
-                throw new ArgumentNullException(nameof(type));
-            if (eventName == null)
-                throw new ArgumentNullException(nameof(eventName));
-            if (scheduler == null)
-                throw new ArgumentNullException(nameof(scheduler));
-            
-            return provider.CreateQuery<EventPattern<EventArgs>>(
-                Expression.Call(
-                    null,
-#if CRIPPLED_REFLECTION
-                    InfoOf(() => Qbservable.FromEventPattern(default(IQbservableProvider), default(Type), default(string), default(IScheduler))),
-#else
-                    (MethodInfo)MethodInfo.GetCurrentMethod(),
-#endif
-                    Expression.Constant(provider, typeof(IQbservableProvider)),
-                    Expression.Constant(type, typeof(Type)),
-                    Expression.Constant(eventName, typeof(string)),
-                    Expression.Constant(scheduler, typeof(IScheduler))
-                )
-            );
-        }
-#else
         /// <summary>
         /// Converts a static .NET event, conforming to the standard .NET event pattern with an <see cref="EventArgs" /> parameter, to an observable sequence.
         /// Each event invocation is surfaced through an OnNext message in the resulting sequence.
@@ -6205,7 +5856,6 @@ namespace System.Reactive.Linq
                 )
             );
         }
-#endif
         
         /// <summary>
         /// Converts a .NET event, conforming to the standard .NET event pattern based on a supplied event delegate type, to an observable sequence.
@@ -6241,9 +5891,6 @@ namespace System.Reactive.Linq
         /// </remarks>
         /// <seealso cref="Observable.ToEventPattern{TEventArgs}(IObservable{EventPattern{TEventArgs}})" />
         public static IQbservable<EventPattern<TEventArgs>> FromEventPattern<TDelegate, TEventArgs>(this IQbservableProvider provider, Expression<Action<TDelegate>> addHandler, Expression<Action<TDelegate>> removeHandler)
-#if !NO_EVENTARGS_CONSTRAINT
-            where TEventArgs : EventArgs
-#endif
         {
             if (provider == null)
                 throw new ArgumentNullException(nameof(provider));
@@ -6298,9 +5945,6 @@ namespace System.Reactive.Linq
         /// </remarks>
         /// <seealso cref="Observable.ToEventPattern{TEventArgs}(IObservable{EventPattern{TEventArgs}})" />
         public static IQbservable<EventPattern<TEventArgs>> FromEventPattern<TDelegate, TEventArgs>(this IQbservableProvider provider, Expression<Action<TDelegate>> addHandler, Expression<Action<TDelegate>> removeHandler, IScheduler scheduler)
-#if !NO_EVENTARGS_CONSTRAINT
-            where TEventArgs : EventArgs
-#endif
         {
             if (provider == null)
                 throw new ArgumentNullException(nameof(provider));
@@ -6362,9 +6006,6 @@ namespace System.Reactive.Linq
         /// </remarks>
         /// <seealso cref="Observable.ToEventPattern{TEventArgs}(IObservable{EventPattern{TEventArgs}})" />
         public static IQbservable<EventPattern<TEventArgs>> FromEventPattern<TDelegate, TEventArgs>(this IQbservableProvider provider, Expression<Func<EventHandler<TEventArgs>, TDelegate>> conversion, Expression<Action<TDelegate>> addHandler, Expression<Action<TDelegate>> removeHandler)
-#if !NO_EVENTARGS_CONSTRAINT
-            where TEventArgs : EventArgs
-#endif
         {
             if (provider == null)
                 throw new ArgumentNullException(nameof(provider));
@@ -6423,9 +6064,6 @@ namespace System.Reactive.Linq
         /// </remarks>
         /// <seealso cref="Observable.ToEventPattern{TEventArgs}(IObservable{EventPattern{TEventArgs}})" />
         public static IQbservable<EventPattern<TEventArgs>> FromEventPattern<TDelegate, TEventArgs>(this IQbservableProvider provider, Expression<Func<EventHandler<TEventArgs>, TDelegate>> conversion, Expression<Action<TDelegate>> addHandler, Expression<Action<TDelegate>> removeHandler, IScheduler scheduler)
-#if !NO_EVENTARGS_CONSTRAINT
-            where TEventArgs : EventArgs
-#endif
         {
             if (provider == null)
                 throw new ArgumentNullException(nameof(provider));
@@ -6490,9 +6128,6 @@ namespace System.Reactive.Linq
         /// </remarks>
         /// <seealso cref="Observable.ToEventPattern{TEventArgs}(IObservable{EventPattern{TEventArgs}})" />
         public static IQbservable<EventPattern<TSender, TEventArgs>> FromEventPattern<TDelegate, TSender, TEventArgs>(this IQbservableProvider provider, Expression<Action<TDelegate>> addHandler, Expression<Action<TDelegate>> removeHandler)
-#if !NO_EVENTARGS_CONSTRAINT
-            where TEventArgs : EventArgs
-#endif
         {
             if (provider == null)
                 throw new ArgumentNullException(nameof(provider));
@@ -6548,9 +6183,6 @@ namespace System.Reactive.Linq
         /// </remarks>
         /// <seealso cref="Observable.ToEventPattern{TEventArgs}(IObservable{EventPattern{TEventArgs}})" />
         public static IQbservable<EventPattern<TSender, TEventArgs>> FromEventPattern<TDelegate, TSender, TEventArgs>(this IQbservableProvider provider, Expression<Action<TDelegate>> addHandler, Expression<Action<TDelegate>> removeHandler, IScheduler scheduler)
-#if !NO_EVENTARGS_CONSTRAINT
-            where TEventArgs : EventArgs
-#endif
         {
             if (provider == null)
                 throw new ArgumentNullException(nameof(provider));
@@ -6608,9 +6240,6 @@ namespace System.Reactive.Linq
         /// </remarks>
         /// <seealso cref="Observable.ToEventPattern{TEventArgs}(IObservable{EventPattern{TEventArgs}})" />
         public static IQbservable<EventPattern<TEventArgs>> FromEventPattern<TEventArgs>(this IQbservableProvider provider, Expression<Action<EventHandler<TEventArgs>>> addHandler, Expression<Action<EventHandler<TEventArgs>>> removeHandler)
-#if !NO_EVENTARGS_CONSTRAINT
-            where TEventArgs : EventArgs
-#endif
         {
             if (provider == null)
                 throw new ArgumentNullException(nameof(provider));
@@ -6662,9 +6291,6 @@ namespace System.Reactive.Linq
         /// </remarks>
         /// <seealso cref="Observable.ToEventPattern{TEventArgs}(IObservable{EventPattern{TEventArgs}})" />
         public static IQbservable<EventPattern<TEventArgs>> FromEventPattern<TEventArgs>(this IQbservableProvider provider, Expression<Action<EventHandler<TEventArgs>>> addHandler, Expression<Action<EventHandler<TEventArgs>>> removeHandler, IScheduler scheduler)
-#if !NO_EVENTARGS_CONSTRAINT
-            where TEventArgs : EventArgs
-#endif
         {
             if (provider == null)
                 throw new ArgumentNullException(nameof(provider));
@@ -6726,9 +6352,6 @@ namespace System.Reactive.Linq
         /// </remarks>
         /// <seealso cref="Observable.ToEventPattern{TEventArgs}(IObservable{EventPattern{TEventArgs}})" />
         public static IQbservable<EventPattern<TEventArgs>> FromEventPattern<TEventArgs>(this IQbservableProvider provider, object target, string eventName)
-#if !NO_EVENTARGS_CONSTRAINT
-            where TEventArgs : EventArgs
-#endif
         {
             if (provider == null)
                 throw new ArgumentNullException(nameof(provider));
@@ -6784,9 +6407,6 @@ namespace System.Reactive.Linq
         /// </remarks>
         /// <seealso cref="Observable.ToEventPattern{TEventArgs}(IObservable{EventPattern{TEventArgs}})" />
         public static IQbservable<EventPattern<TEventArgs>> FromEventPattern<TEventArgs>(this IQbservableProvider provider, object target, string eventName, IScheduler scheduler)
-#if !NO_EVENTARGS_CONSTRAINT
-            where TEventArgs : EventArgs
-#endif
         {
             if (provider == null)
                 throw new ArgumentNullException(nameof(provider));
@@ -6848,9 +6468,6 @@ namespace System.Reactive.Linq
         /// </remarks>
         /// <seealso cref="Observable.ToEventPattern{TEventArgs}(IObservable{EventPattern{TEventArgs}})" />
         public static IQbservable<EventPattern<TEventArgs>> FromEventPattern<TEventArgs>(this IQbservableProvider provider, Type type, string eventName)
-#if !NO_EVENTARGS_CONSTRAINT
-            where TEventArgs : EventArgs
-#endif
         {
             if (provider == null)
                 throw new ArgumentNullException(nameof(provider));
@@ -6906,9 +6523,6 @@ namespace System.Reactive.Linq
         /// </remarks>
         /// <seealso cref="Observable.ToEventPattern{TEventArgs}(IObservable{EventPattern{TEventArgs}})" />
         public static IQbservable<EventPattern<TEventArgs>> FromEventPattern<TEventArgs>(this IQbservableProvider provider, Type type, string eventName, IScheduler scheduler)
-#if !NO_EVENTARGS_CONSTRAINT
-            where TEventArgs : EventArgs
-#endif
         {
             if (provider == null)
                 throw new ArgumentNullException(nameof(provider));
@@ -6971,9 +6585,6 @@ namespace System.Reactive.Linq
         /// </remarks>
         /// <seealso cref="Observable.ToEventPattern{TEventArgs}(IObservable{EventPattern{TEventArgs}})" />
         public static IQbservable<EventPattern<TSender, TEventArgs>> FromEventPattern<TSender, TEventArgs>(this IQbservableProvider provider, object target, string eventName)
-#if !NO_EVENTARGS_CONSTRAINT
-            where TEventArgs : EventArgs
-#endif
         {
             if (provider == null)
                 throw new ArgumentNullException(nameof(provider));
@@ -7030,9 +6641,6 @@ namespace System.Reactive.Linq
         /// </remarks>
         /// <seealso cref="Observable.ToEventPattern{TEventArgs}(IObservable{EventPattern{TEventArgs}})" />
         public static IQbservable<EventPattern<TSender, TEventArgs>> FromEventPattern<TSender, TEventArgs>(this IQbservableProvider provider, object target, string eventName, IScheduler scheduler)
-#if !NO_EVENTARGS_CONSTRAINT
-            where TEventArgs : EventArgs
-#endif
         {
             if (provider == null)
                 throw new ArgumentNullException(nameof(provider));
@@ -7095,9 +6703,6 @@ namespace System.Reactive.Linq
         /// </remarks>
         /// <seealso cref="Observable.ToEventPattern{TEventArgs}(IObservable{EventPattern{TEventArgs}})" />
         public static IQbservable<EventPattern<TSender, TEventArgs>> FromEventPattern<TSender, TEventArgs>(this IQbservableProvider provider, Type type, string eventName)
-#if !NO_EVENTARGS_CONSTRAINT
-            where TEventArgs : EventArgs
-#endif
         {
             if (provider == null)
                 throw new ArgumentNullException(nameof(provider));
@@ -7154,9 +6759,6 @@ namespace System.Reactive.Linq
         /// </remarks>
         /// <seealso cref="Observable.ToEventPattern{TEventArgs}(IObservable{EventPattern{TEventArgs}})" />
         public static IQbservable<EventPattern<TSender, TEventArgs>> FromEventPattern<TSender, TEventArgs>(this IQbservableProvider provider, Type type, string eventName, IScheduler scheduler)
-#if !NO_EVENTARGS_CONSTRAINT
-            where TEventArgs : EventArgs
-#endif
         {
             if (provider == null)
                 throw new ArgumentNullException(nameof(provider));

+ 0 - 3
Rx.NET/Source/src/System.Reactive/Linq/QueryLanguage.Conversions.cs

@@ -113,9 +113,6 @@ namespace System.Reactive.Linq
         #region ToEventPattern
 
         public virtual IEventPatternSource<TEventArgs> ToEventPattern<TEventArgs>(IObservable<EventPattern<TEventArgs>> source)
-#if !NO_EVENTARGS_CONSTRAINT
-            where TEventArgs : EventArgs
-#endif
         {
             return new EventPatternSource<TEventArgs>(
                 source,

+ 0 - 161
Rx.NET/Source/src/System.Reactive/Linq/QueryLanguage.Events.cs

@@ -31,17 +31,6 @@ namespace System.Reactive.Linq
 
         #region Action<EventHandler>
 
-#if !NO_EVENTARGS_CONSTRAINT
-        public virtual IObservable<EventPattern<EventArgs>> FromEventPattern(Action<EventHandler> addHandler, Action<EventHandler> removeHandler)
-        {
-            return FromEventPattern_(addHandler, removeHandler, GetSchedulerForCurrentContext());
-        }
-
-        public virtual IObservable<EventPattern<EventArgs>> FromEventPattern(Action<EventHandler> addHandler, Action<EventHandler> removeHandler, IScheduler scheduler)
-        {
-            return FromEventPattern_(addHandler, removeHandler, scheduler);
-        }
-#else
         public virtual IObservable<EventPattern<object>> FromEventPattern(Action<EventHandler> addHandler, Action<EventHandler> removeHandler)
         {
             return FromEventPattern_(addHandler, removeHandler, GetSchedulerForCurrentContext());
@@ -51,21 +40,9 @@ namespace System.Reactive.Linq
         {
             return FromEventPattern_(addHandler, removeHandler, scheduler);
         }
-#endif
 
         #region Implementation
 
-#if !NO_EVENTARGS_CONSTRAINT
-        private static IObservable<EventPattern<EventArgs>> FromEventPattern_(Action<EventHandler> addHandler, Action<EventHandler> removeHandler, IScheduler scheduler)
-        {
-#if !NO_PERF
-            return new FromEventPattern.Impl<EventHandler, EventArgs>(e => new EventHandler(e), addHandler, removeHandler, scheduler);
-#else
-            var res = Observable.FromEventPattern<EventHandler, EventArgs>(e => new EventHandler(e), addHandler, removeHandler);
-            return SynchronizeEvents(res, scheduler);
-#endif
-        }
-#else
         private static IObservable<EventPattern<object>> FromEventPattern_(Action<EventHandler> addHandler, Action<EventHandler> removeHandler, IScheduler scheduler)
         {
 #if !NO_PERF
@@ -75,7 +52,6 @@ namespace System.Reactive.Linq
             return SynchronizeEvents(res, scheduler);
 #endif
         }
-#endif
 
         #endregion
 
@@ -83,31 +59,19 @@ namespace System.Reactive.Linq
 
         #region Action<TDelegate>
 
-#if !NO_EVENTARGS_CONSTRAINT
-        public virtual IObservable<EventPattern<TEventArgs>> FromEventPattern<TDelegate, TEventArgs>(Action<TDelegate> addHandler, Action<TDelegate> removeHandler) where TEventArgs : EventArgs
-#else
         public virtual IObservable<EventPattern<TEventArgs>> FromEventPattern<TDelegate, TEventArgs>(Action<TDelegate> addHandler, Action<TDelegate> removeHandler)
-#endif
         {
             return FromEventPattern_<TDelegate, TEventArgs>(addHandler, removeHandler, GetSchedulerForCurrentContext());
         }
 
-#if !NO_EVENTARGS_CONSTRAINT
-        public virtual IObservable<EventPattern<TEventArgs>> FromEventPattern<TDelegate, TEventArgs>(Action<TDelegate> addHandler, Action<TDelegate> removeHandler, IScheduler scheduler) where TEventArgs : EventArgs
-#else
         public virtual IObservable<EventPattern<TEventArgs>> FromEventPattern<TDelegate, TEventArgs>(Action<TDelegate> addHandler, Action<TDelegate> removeHandler, IScheduler scheduler)
-#endif
         {
             return FromEventPattern_<TDelegate, TEventArgs>(addHandler, removeHandler, scheduler);
         }
 
         #region Implementation
 
-#if !NO_EVENTARGS_CONSTRAINT
-        private static IObservable<EventPattern<TEventArgs>> FromEventPattern_<TDelegate, TEventArgs>(Action<TDelegate> addHandler, Action<TDelegate> removeHandler, IScheduler scheduler) where TEventArgs : EventArgs
-#else
         private static IObservable<EventPattern<TEventArgs>> FromEventPattern_<TDelegate, TEventArgs>(Action<TDelegate> addHandler, Action<TDelegate> removeHandler, IScheduler scheduler)
-#endif
         {
 #if !NO_PERF
             return new FromEventPattern.Impl<TDelegate, TEventArgs>(addHandler, removeHandler, scheduler);
@@ -126,31 +90,19 @@ namespace System.Reactive.Linq
 
         #endregion
 
-#if !NO_EVENTARGS_CONSTRAINT
-        public virtual IObservable<EventPattern<TEventArgs>> FromEventPattern<TDelegate, TEventArgs>(Func<EventHandler<TEventArgs>, TDelegate> conversion, Action<TDelegate> addHandler, Action<TDelegate> removeHandler) where TEventArgs : EventArgs
-#else
         public virtual IObservable<EventPattern<TEventArgs>> FromEventPattern<TDelegate, TEventArgs>(Func<EventHandler<TEventArgs>, TDelegate> conversion, Action<TDelegate> addHandler, Action<TDelegate> removeHandler)
-#endif
         {
             return FromEventPattern_<TDelegate, TEventArgs>(conversion, addHandler, removeHandler, GetSchedulerForCurrentContext());
         }
 
-#if !NO_EVENTARGS_CONSTRAINT
-        public virtual IObservable<EventPattern<TEventArgs>> FromEventPattern<TDelegate, TEventArgs>(Func<EventHandler<TEventArgs>, TDelegate> conversion, Action<TDelegate> addHandler, Action<TDelegate> removeHandler, IScheduler scheduler) where TEventArgs : EventArgs
-#else
         public virtual IObservable<EventPattern<TEventArgs>> FromEventPattern<TDelegate, TEventArgs>(Func<EventHandler<TEventArgs>, TDelegate> conversion, Action<TDelegate> addHandler, Action<TDelegate> removeHandler, IScheduler scheduler)
-#endif
         {
             return FromEventPattern_<TDelegate, TEventArgs>(conversion, addHandler, removeHandler, scheduler);
         }
 
         #region Implementation
 
-#if !NO_EVENTARGS_CONSTRAINT
-        private static IObservable<EventPattern<TEventArgs>> FromEventPattern_<TDelegate, TEventArgs>(Func<EventHandler<TEventArgs>, TDelegate> conversion, Action<TDelegate> addHandler, Action<TDelegate> removeHandler, IScheduler scheduler) where TEventArgs : EventArgs
-#else
         private static IObservable<EventPattern<TEventArgs>> FromEventPattern_<TDelegate, TEventArgs>(Func<EventHandler<TEventArgs>, TDelegate> conversion, Action<TDelegate> addHandler, Action<TDelegate> removeHandler, IScheduler scheduler)
-#endif
         {
 #if !NO_PERF
             return new FromEventPattern.Impl<TDelegate, TEventArgs>(conversion, addHandler, removeHandler, scheduler);
@@ -168,31 +120,19 @@ namespace System.Reactive.Linq
 
         #endregion
 
-#if !NO_EVENTARGS_CONSTRAINT
-        public virtual IObservable<EventPattern<TSender, TEventArgs>> FromEventPattern<TDelegate, TSender, TEventArgs>(Action<TDelegate> addHandler, Action<TDelegate> removeHandler) where TEventArgs : EventArgs
-#else
         public virtual IObservable<EventPattern<TSender, TEventArgs>> FromEventPattern<TDelegate, TSender, TEventArgs>(Action<TDelegate> addHandler, Action<TDelegate> removeHandler)
-#endif
         {
             return FromEventPattern_<TDelegate, TSender, TEventArgs>(addHandler, removeHandler, GetSchedulerForCurrentContext());
         }
 
-#if !NO_EVENTARGS_CONSTRAINT
-        public virtual IObservable<EventPattern<TSender, TEventArgs>> FromEventPattern<TDelegate, TSender, TEventArgs>(Action<TDelegate> addHandler, Action<TDelegate> removeHandler, IScheduler scheduler) where TEventArgs : EventArgs
-#else
         public virtual IObservable<EventPattern<TSender, TEventArgs>> FromEventPattern<TDelegate, TSender, TEventArgs>(Action<TDelegate> addHandler, Action<TDelegate> removeHandler, IScheduler scheduler)
-#endif
         {
             return FromEventPattern_<TDelegate, TSender, TEventArgs>(addHandler, removeHandler, scheduler);
         }
 
         #region Implementation
 
-#if !NO_EVENTARGS_CONSTRAINT
-        private static IObservable<EventPattern<TSender, TEventArgs>> FromEventPattern_<TDelegate, TSender, TEventArgs>(Action<TDelegate> addHandler, Action<TDelegate> removeHandler, IScheduler scheduler) where TEventArgs : EventArgs
-#else
         private static IObservable<EventPattern<TSender, TEventArgs>> FromEventPattern_<TDelegate, TSender, TEventArgs>(Action<TDelegate> addHandler, Action<TDelegate> removeHandler, IScheduler scheduler)
-#endif
         {
 #if !NO_PERF
             return new FromEventPattern.Impl<TDelegate, TSender, TEventArgs>(addHandler, removeHandler, scheduler);
@@ -215,31 +155,19 @@ namespace System.Reactive.Linq
 
         #region Action<EventHandler<TEventArgs>>
 
-#if !NO_EVENTARGS_CONSTRAINT
-        public virtual IObservable<EventPattern<TEventArgs>> FromEventPattern<TEventArgs>(Action<EventHandler<TEventArgs>> addHandler, Action<EventHandler<TEventArgs>> removeHandler) where TEventArgs : EventArgs
-#else
         public virtual IObservable<EventPattern<TEventArgs>> FromEventPattern<TEventArgs>(Action<EventHandler<TEventArgs>> addHandler, Action<EventHandler<TEventArgs>> removeHandler)
-#endif
         {
             return FromEventPattern_<TEventArgs>(addHandler, removeHandler, GetSchedulerForCurrentContext());
         }
 
-        #if !NO_EVENTARGS_CONSTRAINT
-        public virtual IObservable<EventPattern<TEventArgs>> FromEventPattern<TEventArgs>(Action<EventHandler<TEventArgs>> addHandler, Action<EventHandler<TEventArgs>> removeHandler, IScheduler scheduler) where TEventArgs : EventArgs
-#else
         public virtual IObservable<EventPattern<TEventArgs>> FromEventPattern<TEventArgs>(Action<EventHandler<TEventArgs>> addHandler, Action<EventHandler<TEventArgs>> removeHandler, IScheduler scheduler)
-#endif
         {
             return FromEventPattern_<TEventArgs>(addHandler, removeHandler, scheduler);
         }
 
         #region Implementation
 
-#if !NO_EVENTARGS_CONSTRAINT
-        private static IObservable<EventPattern<TEventArgs>> FromEventPattern_<TEventArgs>(Action<EventHandler<TEventArgs>> addHandler, Action<EventHandler<TEventArgs>> removeHandler, IScheduler scheduler) where TEventArgs : EventArgs
-#else
         private static IObservable<EventPattern<TEventArgs>> FromEventPattern_<TEventArgs>(Action<EventHandler<TEventArgs>> addHandler, Action<EventHandler<TEventArgs>> removeHandler, IScheduler scheduler)
-#endif
         {
 #if !NO_PERF
             return new FromEventPattern.Impl<EventHandler<TEventArgs>, TEventArgs>(handler => handler, addHandler, removeHandler, scheduler);
@@ -259,17 +187,6 @@ namespace System.Reactive.Linq
 
         #region Instance events
 
-#if !NO_EVENTARGS_CONSTRAINT
-        public virtual IObservable<EventPattern<EventArgs>> FromEventPattern(object target, string eventName)
-        {
-            return FromEventPattern_(target, eventName, GetSchedulerForCurrentContext());
-        }
-
-        public virtual IObservable<EventPattern<EventArgs>> FromEventPattern(object target, string eventName, IScheduler scheduler)
-        {
-            return FromEventPattern_(target, eventName, scheduler);
-        }
-#else
         public virtual IObservable<EventPattern<object>> FromEventPattern(object target, string eventName)
         {
             return FromEventPattern_(target, eventName, GetSchedulerForCurrentContext());
@@ -279,80 +196,48 @@ namespace System.Reactive.Linq
         {
             return FromEventPattern_(target, eventName, scheduler);
         }
-#endif
 
         #region Implementation
 
-#if !NO_EVENTARGS_CONSTRAINT
-        private static IObservable<EventPattern<EventArgs>> FromEventPattern_(object target, string eventName, IScheduler scheduler)
-        {
-            return FromEventPattern_<object, EventArgs, EventPattern<EventArgs>>(target.GetType(), target, eventName, (sender, args) => new EventPattern<EventArgs>(sender, args), scheduler);
-        }
-#else
         private static IObservable<EventPattern<object>> FromEventPattern_(object target, string eventName, IScheduler scheduler)
         {
             return FromEventPattern_<object, object, EventPattern<object>>(target.GetType(), target, eventName, (sender, args) => new EventPattern<object>(sender, args), scheduler);
         }
-#endif
 
         #endregion
 
-#if !NO_EVENTARGS_CONSTRAINT
-        public virtual IObservable<EventPattern<TEventArgs>> FromEventPattern<TEventArgs>(object target, string eventName) where TEventArgs : EventArgs
-#else
         public virtual IObservable<EventPattern<TEventArgs>> FromEventPattern<TEventArgs>(object target, string eventName)
-#endif
         {
             return FromEventPattern_<TEventArgs>(target, eventName, GetSchedulerForCurrentContext());
         }
 
-#if !NO_EVENTARGS_CONSTRAINT
-        public virtual IObservable<EventPattern<TEventArgs>> FromEventPattern<TEventArgs>(object target, string eventName, IScheduler scheduler) where TEventArgs : EventArgs
-#else
         public virtual IObservable<EventPattern<TEventArgs>> FromEventPattern<TEventArgs>(object target, string eventName, IScheduler scheduler)
-#endif
         {
             return FromEventPattern_<TEventArgs>(target, eventName, scheduler);
         }
 
         #region Implementation
 
-#if !NO_EVENTARGS_CONSTRAINT
-        private static IObservable<EventPattern<TEventArgs>> FromEventPattern_<TEventArgs>(object target, string eventName, IScheduler scheduler) where TEventArgs : EventArgs
-#else
         private static IObservable<EventPattern<TEventArgs>> FromEventPattern_<TEventArgs>(object target, string eventName, IScheduler scheduler)
-#endif
         {
             return FromEventPattern_<object, TEventArgs, EventPattern<TEventArgs>>(target.GetType(), target, eventName, (sender, args) => new EventPattern<TEventArgs>(sender, args), scheduler);
         }
 
         #endregion
 
-#if !NO_EVENTARGS_CONSTRAINT
-        public virtual IObservable<EventPattern<TSender, TEventArgs>> FromEventPattern<TSender, TEventArgs>(object target, string eventName) where TEventArgs : EventArgs
-#else
         public virtual IObservable<EventPattern<TSender, TEventArgs>> FromEventPattern<TSender, TEventArgs>(object target, string eventName)
-#endif
         {
             return FromEventPattern_<TSender, TEventArgs>(target, eventName, GetSchedulerForCurrentContext());
         }
 
-#if !NO_EVENTARGS_CONSTRAINT
-        public virtual IObservable<EventPattern<TSender, TEventArgs>> FromEventPattern<TSender, TEventArgs>(object target, string eventName, IScheduler scheduler) where TEventArgs : EventArgs
-#else
         public virtual IObservable<EventPattern<TSender, TEventArgs>> FromEventPattern<TSender, TEventArgs>(object target, string eventName, IScheduler scheduler)
-#endif
         {
             return FromEventPattern_<TSender, TEventArgs>(target, eventName, scheduler);
         }
 
         #region Implementation
 
-#if !NO_EVENTARGS_CONSTRAINT
-        private static IObservable<EventPattern<TSender, TEventArgs>> FromEventPattern_<TSender, TEventArgs>(object target, string eventName, IScheduler scheduler) where TEventArgs : EventArgs
-#else
         private static IObservable<EventPattern<TSender, TEventArgs>> FromEventPattern_<TSender, TEventArgs>(object target, string eventName, IScheduler scheduler)
-#endif
         {
             return FromEventPattern_<TSender, TEventArgs, EventPattern<TSender, TEventArgs>>(target.GetType(), target, eventName, (sender, args) => new EventPattern<TSender, TEventArgs>(sender, args), scheduler);
         }
@@ -363,17 +248,6 @@ namespace System.Reactive.Linq
 
         #region Static events
 
-#if !NO_EVENTARGS_CONSTRAINT
-        public virtual IObservable<EventPattern<EventArgs>> FromEventPattern(Type type, string eventName)
-        {
-            return FromEventPattern_(type, eventName, GetSchedulerForCurrentContext());
-        }
-
-        public virtual IObservable<EventPattern<EventArgs>> FromEventPattern(Type type, string eventName, IScheduler scheduler)
-        {
-            return FromEventPattern_(type, eventName, scheduler);
-        }
-#else
         public virtual IObservable<EventPattern<object>> FromEventPattern(Type type, string eventName)
         {
             return FromEventPattern_(type, eventName, GetSchedulerForCurrentContext());
@@ -383,80 +257,48 @@ namespace System.Reactive.Linq
         {
             return FromEventPattern_(type, eventName, scheduler);
         }
-#endif
 
         #region Implementation
 
-#if !NO_EVENTARGS_CONSTRAINT
-        private static IObservable<EventPattern<EventArgs>> FromEventPattern_(Type type, string eventName, IScheduler scheduler)
-        {
-            return FromEventPattern_<object, EventArgs, EventPattern<EventArgs>>(type, null, eventName, (sender, args) => new EventPattern<EventArgs>(sender, args), scheduler);
-        }
-#else
         private static IObservable<EventPattern<object>> FromEventPattern_(Type type, string eventName, IScheduler scheduler)
         {
             return FromEventPattern_<object, object, EventPattern<object>>(type, null, eventName, (sender, args) => new EventPattern<object>(sender, args), scheduler);
         }
-#endif
 
         #endregion
 
-#if !NO_EVENTARGS_CONSTRAINT
-        public virtual IObservable<EventPattern<TEventArgs>> FromEventPattern<TEventArgs>(Type type, string eventName) where TEventArgs : EventArgs
-#else
         public virtual IObservable<EventPattern<TEventArgs>> FromEventPattern<TEventArgs>(Type type, string eventName)
-#endif
         {
             return FromEventPattern_<TEventArgs>(type, eventName, GetSchedulerForCurrentContext());
         }
 
-#if !NO_EVENTARGS_CONSTRAINT
-        public virtual IObservable<EventPattern<TEventArgs>> FromEventPattern<TEventArgs>(Type type, string eventName, IScheduler scheduler) where TEventArgs : EventArgs
-#else
         public virtual IObservable<EventPattern<TEventArgs>> FromEventPattern<TEventArgs>(Type type, string eventName, IScheduler scheduler)
-#endif
         {
             return FromEventPattern_<TEventArgs>(type, eventName, scheduler);
         }
 
         #region Implementation
 
-#if !NO_EVENTARGS_CONSTRAINT
-        private static IObservable<EventPattern<TEventArgs>> FromEventPattern_<TEventArgs>(Type type, string eventName, IScheduler scheduler) where TEventArgs : EventArgs
-#else
         private static IObservable<EventPattern<TEventArgs>> FromEventPattern_<TEventArgs>(Type type, string eventName, IScheduler scheduler)
-#endif
         {
             return FromEventPattern_<object, TEventArgs, EventPattern<TEventArgs>>(type, null, eventName, (sender, args) => new EventPattern<TEventArgs>(sender, args), scheduler);
         }
 
         #endregion
 
-#if !NO_EVENTARGS_CONSTRAINT
-        public virtual IObservable<EventPattern<TSender, TEventArgs>> FromEventPattern<TSender, TEventArgs>(Type type, string eventName) where TEventArgs : EventArgs
-#else
         public virtual IObservable<EventPattern<TSender, TEventArgs>> FromEventPattern<TSender, TEventArgs>(Type type, string eventName)
-#endif
         {
             return FromEventPattern_<TSender, TEventArgs>(type, eventName, GetSchedulerForCurrentContext());
         }
 
-#if !NO_EVENTARGS_CONSTRAINT
-        public virtual IObservable<EventPattern<TSender, TEventArgs>> FromEventPattern<TSender, TEventArgs>(Type type, string eventName, IScheduler scheduler) where TEventArgs : EventArgs
-#else
         public virtual IObservable<EventPattern<TSender, TEventArgs>> FromEventPattern<TSender, TEventArgs>(Type type, string eventName, IScheduler scheduler)
-#endif
         {
             return FromEventPattern_<TSender, TEventArgs>(type, eventName, scheduler);
         }
 
         #region Implementation
 
-#if !NO_EVENTARGS_CONSTRAINT
-        private static IObservable<EventPattern<TSender, TEventArgs>> FromEventPattern_<TSender, TEventArgs>(Type type, string eventName, IScheduler scheduler) where TEventArgs : EventArgs
-#else
         private static IObservable<EventPattern<TSender, TEventArgs>> FromEventPattern_<TSender, TEventArgs>(Type type, string eventName, IScheduler scheduler)
-#endif
         {
             return FromEventPattern_<TSender, TEventArgs, EventPattern<TSender, TEventArgs>>(type, null, eventName, (sender, args) => new EventPattern<TSender, TEventArgs>(sender, args), scheduler);
         }
@@ -468,9 +310,6 @@ namespace System.Reactive.Linq
         #region Helper methods
 
         private static IObservable<TResult> FromEventPattern_<TSender, TEventArgs, TResult>(Type targetType, object target, string eventName, Func<TSender, TEventArgs, TResult> getResult, IScheduler scheduler)
-#if !NO_EVENTARGS_CONSTRAINT
- where TEventArgs : EventArgs
-#endif
         {
             var addMethod = default(MethodInfo);
             var removeMethod = default(MethodInfo);

+ 0 - 9
Rx.NET/Source/tests/Tests.System.Reactive/Tests/Linq/ObservableEventsTest.cs

@@ -240,11 +240,6 @@ namespace ReactiveTests.Tests
             ReactiveAssert.Throws</**/ArgumentNullException>(() => Observable.FromEventPattern(new FromEventPattern_ArgCheck(), null, Scheduler.Default));
             ReactiveAssert.Throws</**/ArgumentNullException>(() => Observable.FromEventPattern(new FromEventPattern_ArgCheck(), "foo", default(IScheduler)));
             ReactiveAssert.Throws<InvalidOperationException>(() => Observable.FromEventPattern(new FromEventPattern_ArgCheck(), "E1"));
-#if !NO_EVENTARGS_CONSTRAINT
-            ReactiveAssert.Throws<InvalidOperationException>(() => Observable.FromEventPattern(new FromEventPattern_ArgCheck(), "E2"));
-            ReactiveAssert.Throws<InvalidOperationException>(() => Observable.FromEventPattern(new FromEventPattern_ArgCheck(), "E3"));
-            ReactiveAssert.Throws<InvalidOperationException>(() => Observable.FromEventPattern(new FromEventPattern_ArgCheck(), "E4"));
-#endif
             ReactiveAssert.Throws<InvalidOperationException>(() => Observable.FromEventPattern(new FromEventPattern_ArgCheck(), "E5"));
             ReactiveAssert.Throws<InvalidOperationException>(() => Observable.FromEventPattern(new FromEventPattern_ArgCheck(), "E6"));
             ReactiveAssert.Throws<InvalidOperationException>(() => Observable.FromEventPattern(new FromEventPattern_ArgCheck(), "foo"));
@@ -340,11 +335,7 @@ namespace ReactiveTests.Tests
             var e1 = new CancelEventArgs();
             var e2 = new CancelEventArgs();
 
-#if !NO_EVENTARGS_CONSTRAINT
-            var lst = new List<EventPattern<EventArgs>>();
-#else
             var lst = new List<EventPattern<object>>();
-#endif
             using (es.Subscribe(e => lst.Add(e)))
             {
                 src.OnE2(e1);