aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/OpenSim/Framework/RegistryCore.cs
diff options
context:
space:
mode:
Diffstat (limited to 'OpenSim/Framework/RegistryCore.cs')
-rw-r--r--OpenSim/Framework/RegistryCore.cs44
1 files changed, 44 insertions, 0 deletions
diff --git a/OpenSim/Framework/RegistryCore.cs b/OpenSim/Framework/RegistryCore.cs
new file mode 100644
index 0000000..06732f5
--- /dev/null
+++ b/OpenSim/Framework/RegistryCore.cs
@@ -0,0 +1,44 @@
1using System;
2using System.Collections.Generic;
3using System.Text;
4
5namespace OpenSim.Framework
6{
7 public class RegistryCore
8 {
9 protected Dictionary<Type, object> m_moduleInterfaces = new Dictionary<Type, object>();
10
11 /// <summary>
12 /// Register an Module interface.
13 /// </summary>
14 /// <typeparam name="T"></typeparam>
15 /// <param name="iface"></param>
16 public void RegisterInterface<T>(T iface)
17 {
18 lock (m_moduleInterfaces)
19 {
20 if (!m_moduleInterfaces.ContainsKey(typeof(T)))
21 {
22 m_moduleInterfaces.Add(typeof(T), iface);
23 }
24 }
25 }
26
27 public bool TryGet<T>(out T iface)
28 {
29 if (m_moduleInterfaces.ContainsKey(typeof(T)))
30 {
31 iface = (T)m_moduleInterfaces[typeof(T)];
32 return true;
33 }
34 iface = default(T);
35 return false;
36 }
37
38 public T Get<T>()
39 {
40 return (T)m_moduleInterfaces[typeof(T)];
41 }
42
43 }
44}