Skip to content

Commit 5043cbb

Browse files
committed
* Switched to multi-target netstandard1.1 and netstandard2.0
* Some minor code cleanup (lots of switching to lamda expressions since so many methods were single-line) * Ignored .vs folder
1 parent 83f9b25 commit 5043cbb

File tree

10 files changed

+123
-1167
lines changed

10 files changed

+123
-1167
lines changed

.gitignore

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,8 @@
66
*.user
77
*.sln.docstates
88

9+
.vs/
10+
911
# Build results
1012

1113
[Dd]ebug/

.vs/config/applicationhost.config

Lines changed: 0 additions & 1031 deletions
This file was deleted.

PubSub/Core/Hub.cs

Lines changed: 80 additions & 50 deletions
Original file line numberDiff line numberDiff line change
@@ -16,53 +16,67 @@ public class Hub
1616
/// </summary>
1717
/// <typeparam name="T"></typeparam>
1818
/// <param name="data"></param>
19-
public void Publish<T>(T data = default(T))
19+
public void Publish<T>( T data = default( T ) )
2020
{
21-
Publish(this, data);
21+
Publish( this, data );
2222
}
2323

24-
public void Publish<T>(object sender, T data = default(T))
24+
public void Publish<T>( object sender, T data = default( T ) )
2525
{
2626
List<Handler> handlerList;
2727

28-
lock (locker)
28+
lock ( locker )
2929
{
30-
handlerList = new List<Handler>(handlers.Count);
31-
var handlersToRemoveList = new List<Handler>(handlers.Count);
32-
foreach (var handler in handlers)
33-
if (!handler.Sender.IsAlive)
34-
handlersToRemoveList.Add(handler);
35-
else if (handler.Type.GetTypeInfo().IsAssignableFrom(typeof(T).GetTypeInfo()))
36-
handlerList.Add(handler);
37-
38-
foreach (var l in handlersToRemoveList) handlers.Remove(l);
30+
handlerList = new List<Handler>( handlers.Count );
31+
32+
var handlersToRemove = new List<Handler>( handlers.Count );
33+
34+
foreach ( var handler in handlers )
35+
{
36+
if ( !handler.Sender.IsAlive )
37+
{
38+
handlersToRemove.Add( handler );
39+
}
40+
else if ( handler.Type.GetTypeInfo().IsAssignableFrom( typeof( T ).GetTypeInfo() ) )
41+
{
42+
handlerList.Add( handler );
43+
}
44+
}
45+
46+
foreach ( var l in handlersToRemove )
47+
{
48+
handlers.Remove( l );
49+
}
3950
}
4051

41-
foreach (var l in handlerList) ((Action<T>) l.Action)(data);
52+
foreach ( var l in handlerList )
53+
{
54+
( (Action<T>) l.Action )( data );
55+
}
4256
}
4357

4458
/// <summary>
4559
/// Allow subscribing directly to this Hub.
4660
/// </summary>
4761
/// <typeparam name="T"></typeparam>
4862
/// <param name="handler"></param>
49-
public void Subscribe<T>(Action<T> handler)
63+
public void Subscribe<T>( Action<T> handler )
5064
{
51-
Subscribe(this, handler);
65+
Subscribe( this, handler );
5266
}
5367

54-
public void Subscribe<T>(object subscriber, Action<T> handler)
68+
public void Subscribe<T>( object subscriber, Action<T> handler )
5569
{
5670
var item = new Handler
5771
{
5872
Action = handler,
59-
Sender = new WeakReference(subscriber),
60-
Type = typeof(T)
73+
Sender = new WeakReference( subscriber ),
74+
Type = typeof( T )
6175
};
6276

63-
lock (locker)
77+
lock ( locker )
6478
{
65-
handlers.Add(item);
79+
handlers.Add( item );
6680
}
6781
}
6882

@@ -71,17 +85,20 @@ public void Subscribe<T>(object subscriber, Action<T> handler)
7185
/// </summary>
7286
public void Unsubscribe()
7387
{
74-
Unsubscribe(this);
88+
Unsubscribe( this );
7589
}
7690

77-
public void Unsubscribe(object subscriber)
91+
public void Unsubscribe( object subscriber )
7892
{
79-
lock (locker)
93+
lock ( locker )
8094
{
81-
var query = handlers.Where(a => !a.Sender.IsAlive ||
82-
a.Sender.Target.Equals(subscriber));
95+
var query = handlers.Where( a => !a.Sender.IsAlive ||
96+
a.Sender.Target.Equals( subscriber ) );
8397

84-
foreach (var h in query.ToList()) handlers.Remove(h);
98+
foreach ( var h in query.ToList() )
99+
{
100+
handlers.Remove( h );
101+
}
85102
}
86103
}
87104

@@ -91,55 +108,68 @@ public void Unsubscribe(object subscriber)
91108
/// <typeparam name="T"></typeparam>
92109
public void Unsubscribe<T>()
93110
{
94-
Unsubscribe<T>(this);
111+
Unsubscribe<T>( this );
95112
}
96113

97114
/// <summary>
98115
/// Allow unsubscribing directly to this Hub.
99116
/// </summary>
100117
/// <typeparam name="T"></typeparam>
101118
/// <param name="handler"></param>
102-
public void Unsubscribe<T>(Action<T> handler)
119+
public void Unsubscribe<T>( Action<T> handler )
103120
{
104-
Unsubscribe(this, handler);
121+
Unsubscribe( this, handler );
105122
}
106123

107-
public void Unsubscribe<T>(object subscriber, Action<T> handler = null)
124+
public void Unsubscribe<T>( object subscriber, Action<T> handler = null )
108125
{
109-
lock (locker)
126+
lock ( locker )
110127
{
111-
var query = handlers
112-
.Where(a => !a.Sender.IsAlive ||
113-
a.Sender.Target.Equals(subscriber) && a.Type == typeof(T));
114-
115-
if (handler != null) query = query.Where(a => a.Action.Equals(handler));
116-
117-
foreach (var h in query.ToList()) handlers.Remove(h);
128+
var query = handlers.Where( a => !a.Sender.IsAlive ||
129+
a.Sender.Target.Equals( subscriber ) && a.Type == typeof( T ) );
130+
131+
if ( handler != null )
132+
{
133+
query = query.Where( a => a.Action.Equals( handler ) );
134+
}
135+
136+
foreach ( var h in query.ToList() )
137+
{
138+
handlers.Remove( h );
139+
}
118140
}
119141
}
120142

121-
public bool Exists<T>(object subscriber)
143+
public bool Exists<T>( object subscriber )
122144
{
123-
lock (locker)
145+
lock ( locker )
124146
{
125-
foreach (var h in handlers)
126-
if (Equals(h.Sender.Target, subscriber) &&
127-
typeof(T) == h.Type)
147+
foreach ( var h in handlers )
148+
{
149+
if ( Equals( h.Sender.Target, subscriber ) &&
150+
typeof( T ) == h.Type )
151+
{
128152
return true;
153+
}
154+
}
129155
}
130156

131157
return false;
132158
}
133159

134-
public bool Exists<T>(object subscriber, Action<T> handler)
160+
public bool Exists<T>( object subscriber, Action<T> handler )
135161
{
136-
lock (locker)
162+
lock ( locker )
137163
{
138-
foreach (var h in handlers)
139-
if (Equals(h.Sender.Target, subscriber) &&
140-
typeof(T) == h.Type &&
141-
h.Action.Equals(handler))
164+
foreach ( var h in handlers )
165+
{
166+
if ( Equals( h.Sender.Target, subscriber ) &&
167+
typeof( T ) == h.Type &&
168+
h.Action.Equals( handler ) )
169+
{
142170
return true;
171+
}
172+
}
143173
}
144174

145175
return false;

PubSub/Extension/PubSubExtensions.cs

Lines changed: 14 additions & 34 deletions
Original file line numberDiff line numberDiff line change
@@ -7,39 +7,19 @@ public static class PubSubExtensions
77
{
88
private static readonly Hub hub = new Hub();
99

10-
public static void Publish<T>(this object obj)
11-
{
12-
hub.Publish(obj, default(T));
13-
}
14-
15-
public static void Publish<T>(this object obj, T data)
16-
{
17-
hub.Publish(obj, data);
18-
}
19-
20-
public static void Subscribe<T>(this object obj, Action<T> handler)
21-
{
22-
hub.Subscribe(obj, handler);
23-
}
24-
25-
public static void Unsubscribe(this object obj)
26-
{
27-
hub.Unsubscribe(obj);
28-
}
29-
30-
public static void Unsubscribe<T>(this object obj)
31-
{
32-
hub.Unsubscribe(obj, (Action<T>) null);
33-
}
34-
35-
public static void Unsubscribe<T>(this object obj, Action<T> handler)
36-
{
37-
hub.Unsubscribe(obj, handler);
38-
}
39-
40-
public static bool Exists<T>(this object obj)
41-
{
42-
return hub.Exists<T>(obj);
43-
}
10+
11+
public static bool Exists<T>( this object obj ) => hub.Exists<T>( obj );
12+
13+
public static void Publish<T>( this object obj ) => hub.Publish( obj, default( T ) );
14+
15+
public static void Publish<T>( this object obj, T data ) => hub.Publish( obj, data );
16+
17+
public static void Subscribe<T>( this object obj, Action<T> handler ) => hub.Subscribe( obj, handler );
18+
19+
public static void Unsubscribe( this object obj ) => hub.Unsubscribe( obj );
20+
21+
public static void Unsubscribe<T>( this object obj ) => hub.Unsubscribe( obj, (Action<T>) null );
22+
23+
public static void Unsubscribe<T>( this object obj, Action<T> handler ) => hub.Unsubscribe( obj, handler );
4424
}
4525
}

PubSub/Ioc/Implementation/PubSubPipeLineFactory.cs

Lines changed: 3 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -11,15 +11,9 @@ public PubSubPipelineFactory()
1111
hub = new Hub();
1212
}
1313

14-
15-
public IPublisher GetPublisher()
16-
{
17-
return new Publisher(hub);
18-
}
1914

20-
public ISubscriber GetSubscriber()
21-
{
22-
return new Subscriber(hub);
23-
}
15+
public IPublisher GetPublisher() => new Publisher( hub );
16+
17+
public ISubscriber GetSubscriber() => new Subscriber( hub );
2418
}
2519
}

PubSub/Ioc/Implementation/Publisher.cs

Lines changed: 3 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -5,14 +5,12 @@ namespace PubSub
55
public class Publisher : IPublisher
66
{
77
private readonly Hub hub;
8-
public Publisher(Hub hub)
8+
9+
public Publisher( Hub hub )
910
{
1011
this.hub = hub;
1112
}
1213

13-
public void Publish<T>(object sender,T data )
14-
{
15-
hub.Publish(sender, data);
16-
}
14+
public void Publish<T>( object sender, T data ) => hub.Publish( sender, data );
1715
}
1816
}

PubSub/Ioc/Implementation/Subscriber.cs

Lines changed: 9 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -5,40 +5,23 @@ namespace PubSub
55
{
66
public class Subscriber : ISubscriber
77
{
8-
public Subscriber(Hub hub)
8+
private readonly Hub hub;
9+
10+
public Subscriber( Hub hub )
911
{
1012
this.hub = hub;
1113
}
1214

13-
private readonly Hub hub;
14-
public void Subscribe<T>(object subscriber, Action<T> handler )
15-
{
16-
hub.Subscribe( subscriber, handler );
17-
}
15+
public bool Exists<T>( object subscriber ) => hub.Exists<T>( subscriber );
1816

19-
public void Unsubscribe(object subscriber )
20-
{
21-
hub.Unsubscribe( subscriber );
22-
}
17+
public bool Exists<T>( object subscriber, Action<T> handler ) => hub.Exists( subscriber, handler );
2318

24-
public void Unsubscribe<T>(object subscriber )
25-
{
26-
hub.Unsubscribe( subscriber, (Action<T>) null );
27-
}
19+
public void Subscribe<T>( object subscriber, Action<T> handler ) => hub.Subscribe( subscriber, handler );
2820

29-
public void Unsubscribe<T>(object subscriber, Action<T> handler )
30-
{
31-
hub.Unsubscribe( subscriber, handler );
32-
}
21+
public void Unsubscribe( object subscriber ) => hub.Unsubscribe( subscriber );
3322

34-
public bool Exists<T>(object subscriber)
35-
{
36-
return hub.Exists<T>(subscriber);
37-
}
23+
public void Unsubscribe<T>( object subscriber ) => hub.Unsubscribe( subscriber, (Action<T>) null );
3824

39-
public bool Exists<T>(object subscriber, Action<T> handler)
40-
{
41-
return hub.Exists<T>(subscriber, handler);
42-
}
25+
public void Unsubscribe<T>( object subscriber, Action<T> handler ) => hub.Unsubscribe( subscriber, handler );
4326
}
4427
}

PubSub/Ioc/Interfaces/IPublisher.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,6 @@
22
{
33
public interface IPublisher
44
{
5-
void Publish<T>(object sender,T data);
5+
void Publish<T>( object sender, T data );
66
}
77
}

PubSub/Ioc/Interfaces/ISubscriber.cs

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -4,11 +4,11 @@ namespace PubSub
44
{
55
public interface ISubscriber
66
{
7-
void Subscribe<T>(object subscriber, Action<T> handler );
8-
void Unsubscribe(object subscriber );
9-
void Unsubscribe<T>(object subscriber );
10-
void Unsubscribe<T>(object subscriber, Action<T> handler );
11-
bool Exists<T>(object subscriber);
12-
bool Exists<T>(object subscriber, Action<T> handler);
7+
bool Exists<T>( object subscriber );
8+
bool Exists<T>( object subscriber, Action<T> handler );
9+
void Subscribe<T>( object subscriber, Action<T> handler );
10+
void Unsubscribe( object subscriber );
11+
void Unsubscribe<T>( object subscriber );
12+
void Unsubscribe<T>( object subscriber, Action<T> handler );
1313
}
1414
}

0 commit comments

Comments
 (0)