forked from oxyplot/oxyplot
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathExampleInfo.cs
More file actions
142 lines (128 loc) · 3.73 KB
/
ExampleInfo.cs
File metadata and controls
142 lines (128 loc) · 3.73 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
// --------------------------------------------------------------------------------------------------------------------
// <copyright file="ExampleInfo.cs" company="OxyPlot">
// Copyright (c) 2014 OxyPlot contributors
// </copyright>
// --------------------------------------------------------------------------------------------------------------------
namespace ExampleLibrary
{
using System.Reflection;
using OxyPlot;
/// <summary>
/// Provides information about an example.
/// </summary>
public class ExampleInfo
{
/// <summary>
/// The method to invoke.
/// </summary>
private readonly MethodInfo method;
/// <summary>
/// The result of the method call.
/// </summary>
private object result;
/// <summary>
/// Initializes a new instance of the <see cref="ExampleInfo"/> class.
/// </summary>
/// <param name="category">The category.</param>
/// <param name="title">The title.</param>
/// <param name="tags">The tags.</param>
/// <param name="method">The method.</param>
public ExampleInfo(string category, string title, string[] tags, MethodInfo method)
{
this.Category = category;
this.Title = title;
this.Tags = tags;
this.method = method;
}
/// <summary>
/// Gets the category.
/// </summary>
/// <value>
/// The category.
/// </value>
public string Category { get; private set; }
/// <summary>
/// Gets the title.
/// </summary>
/// <value>
/// The title.
/// </value>
public string Title { get; private set; }
/// <summary>
/// Gets the tags.
/// </summary>
/// <value>
/// The tags.
/// </value>
public string[] Tags { get; private set; }
/// <summary>
/// Gets the plot model.
/// </summary>
/// <value>
/// The plot model.
/// </value>
public PlotModel PlotModel
{
get
{
var plotModel = this.Result as PlotModel;
if (plotModel != null)
{
return plotModel;
}
var example = this.Result as Example;
return example != null ? example.Model : null;
}
}
/// <summary>
/// Gets the plot controller.
/// </summary>
/// <value>
/// The plot controller.
/// </value>
public IPlotController PlotController
{
get
{
var example = this.Result as Example;
return example != null ? example.Controller : null;
}
}
/// <summary>
/// Gets the code.
/// </summary>
/// <value>
/// The code.
/// </value>
public string Code
{
get
{
return this.PlotModel.ToCode();
}
}
/// <summary>
/// Gets the result.
/// </summary>
/// <value>
/// The result.
/// </value>
private object Result
{
get
{
return this.result ?? (this.result = this.method.Invoke(null, null));
}
}
/// <summary>
/// Returns a <see cref="System.String" /> that represents this instance.
/// </summary>
/// <returns>
/// A <see cref="System.String" /> that represents this instance.
/// </returns>
public override string ToString()
{
return this.Title;
}
}
}