public static void Main()
var fooType = typeof(Foo);
ThrowIfNotEqual(fooType.Name, nameof(Foo));
var fi = fooType.GetField(nameof(Foo.field));
ThrowIfNotEqual(fi.Name, nameof(Foo.field));
var pi = fooType.GetProperty(nameof(Foo.property));
ThrowIfNotEqual(pi.Name, nameof(Foo.property));
var mi = fooType.GetMethod(nameof(Foo.method));
ThrowIfNotEqual(mi.Name, nameof(Foo.method));
var fi2 = fooType.GetNestedTypes()[0];
ThrowIfNotEqual(fi2.Name, nameof(Foo.myEnum));
ThrowIfNotEqual("TestThisMethod", "WorksAsExpected");
public static void ThrowIfNotEqual(string a, string b)
if (a != b) throw new InvalidOperationException($"Are Not Equal: {a} != {b}");
public string property { get; set; }