Terraria v1.4.4.9
Terraria source code documentation
Loading...
Searching...
No Matches
XDeferredSingleton.cs
Go to the documentation of this file.
1using System;
3
5
6internal sealed class XDeferredSingleton<T> where T : XObject
7{
8 private readonly Func<XElement, XName, T> _func;
9
10 internal XElement element;
11
12 internal XName name;
13
14 public T this[string expandedName]
15 {
16 get
17 {
18 if (expandedName == null)
19 {
20 throw new ArgumentNullException("expandedName");
21 }
22 if (name == null)
23 {
24 name = expandedName;
25 }
26 else if (name != expandedName)
27 {
28 return null;
29 }
30 return _func(element, name);
31 }
32 }
33
34 public XDeferredSingleton(Func<XElement, XName, T> func, XElement element, XName name)
35 {
36 if (func == null)
37 {
38 throw new ArgumentNullException("func");
39 }
40 if (element == null)
41 {
42 throw new ArgumentNullException("element");
43 }
44 _func = func;
45 this.element = element;
46 this.name = name;
47 }
48}
XDeferredSingleton(Func< XElement, XName, T > func, XElement element, XName name)