рд╣реИрд▓реЛ, рдореИрдВ рдмрд╛рдзрд╛ рдХреЗ рд╕рд╛рде рдСрдмреНрдЬреЗрдХреНрдЯ рдкреНрд░рдХрд╛рд░реЛрдВ рдХрд╛ рдкрд░реАрдХреНрд╖рдг рдирд╣реАрдВ рдХрд░ рд╕рдХрддрд╛, рд▓реЗрдХрд┐рди рдХреНрд▓рд╛рд╕рд┐рдХ рдЬреЛрд░ рдЕрднреА рднреА рдХрд╛рдо рдХрд░ рд░рд╣рд╛ рд╣реИ
enum TestEnum : ushort
{
one = 0x01,
two = 0x02
}
// test is okay
Assert.AreEqual(typeof(ushort), typeof(TestEnum).GetEnumUnderlyingType());
// test failed
//
// Expected: <System.Uint16>
// But was: <System.RuntimeType>
//
Assert.That(typeof(TestEnum).GetEnumUnderlyingType(), Is.TypeOf<ushort>());
рдХреГрдкрдпрд╛ рдХреМрди рд╕рд╛ рдордВрдЪ рдФрд░ рдХреМрди рд╕рд╛ рдиреВрдирд┐рдЯ рд╕рдВрд╕реНрдХрд░рдг?
рд╣рд╛рдп @TobiasSekanред рдореИрдВ рдХрд╣реВрдВрдЧрд╛ рдХрд┐ рдпрд╣ рдЕрдкреЗрдХреНрд╖рд┐рдд рд╣реИред рдХреНрд▓рд╛рд╕рд┐рдХ рдЕрднрд┐рдХрдерди рдореЗрдВ рдЖрдк рдХреЗрд╡рд▓ рджреЛ рдкреНрд░рдХрд╛рд░реЛрдВ рдХреА рддреБрд▓рдирд╛ рдХрд░ рд░рд╣реЗ рд╣реИрдВред рдмрд╛рдзрд╛ "_рдкрд░реАрдХреНрд╖рдг рдХрд░рддреА рд╣реИ рдХрд┐ рдХреНрдпрд╛ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдорд╛рди рдПрдХ рддрд░реНрдХ рдпрд╛ рд╡реНрдпреБрддреНрдкрдиреНрди рдкреНрд░рдХрд╛рд░ рдХреЗ рд░реВрдк рдореЗрдВ рдЖрдкреВрд░реНрддрд┐ рдХрд┐рдП рдЧрдП рдкреНрд░рдХрд╛рд░ рдХрд╛ рд╣реИред_" рдФрд░ рдорд╛рди рдХрд╛ рдкреНрд░рдХрд╛рд░ typeof(TestEnum).GetEnumUnderlyingType()
рд╣реИ System.RuntimeType
ред
рдЗрд╕реА рддрд░рд╣ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рднреА рд╡рд┐рдлрд▓ рд╣реЛ рдЬрд╛рдПрдЧрд╛ (рдЙрд╕реА рддрд░рд╣ рдХреЗ рд╕рдВрджреЗрд╢ рдХреЗ рд╕рд╛рде)
Assert.That(typeof(string), Is.TypeOf<string>());
рдЬрдмрдХрд┐
Assert.That("", Is.TypeOf<string>());
рдХрд╛рдо рдХрд░реЗрдЧрд╛ред рдЖрдк рдмрд╛рдзрд╛ рдХреЛ рд╣рдореЗрд╢рд╛ Assert.That(typeof(TestEnum).GetEnumUnderlyingType(), Is.EqualTo(typeof(ushort)));
рд░реВрдк рдореЗрдВ рдлрд┐рд░ рд╕реЗ рд▓рд┐рдЦ рд╕рдХрддреЗ рд╣реИрдВ
рдЕрдЪреНрдЫрд╛ рдХреИрдЪ @mikkelbuред рдореИрдВ рдЗрд╕реЗ not a bug
рд░реВрдк рдореЗрдВ рдмрдВрдж рдХрд░рдиреЗ рдЬрд╛ рд░рд╣рд╛ рд╣реВрдВред @TobiasSekan рдореИрдВ рднреНрд░рдо рджреЗрдЦ рд╕рдХрддрд╛ рд╣реВрдВ, рд▓реЗрдХрд┐рди рдкреНрд░рднрд╛рд╡реА рд░реВрдк рд╕реЗ рдЖрдкрдХрд╛ рдкрд╣рд▓рд╛ рдкреИрд░рд╛рдореАрдЯрд░ TypeOf<Type>
рдирд╣реАрдВ ushort
ред
рдареАрдХ рд╣реИ, рдЬрд╛рдирдХрд╛рд░реА рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рдж
рд╕рдмрд╕реЗ рдЙрдкрдпреЛрдЧреА рдЯрд┐рдкреНрдкрдгреА
рд╣рд╛рдп @TobiasSekanред рдореИрдВ рдХрд╣реВрдВрдЧрд╛ рдХрд┐ рдпрд╣ рдЕрдкреЗрдХреНрд╖рд┐рдд рд╣реИред рдХреНрд▓рд╛рд╕рд┐рдХ рдЕрднрд┐рдХрдерди рдореЗрдВ рдЖрдк рдХреЗрд╡рд▓ рджреЛ рдкреНрд░рдХрд╛рд░реЛрдВ рдХреА рддреБрд▓рдирд╛ рдХрд░ рд░рд╣реЗ рд╣реИрдВред рдмрд╛рдзрд╛ "_рдкрд░реАрдХреНрд╖рдг рдХрд░рддреА рд╣реИ рдХрд┐ рдХреНрдпрд╛ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдорд╛рди рдПрдХ рддрд░реНрдХ рдпрд╛ рд╡реНрдпреБрддреНрдкрдиреНрди рдкреНрд░рдХрд╛рд░ рдХреЗ рд░реВрдк рдореЗрдВ рдЖрдкреВрд░реНрддрд┐ рдХрд┐рдП рдЧрдП рдкреНрд░рдХрд╛рд░ рдХрд╛ рд╣реИред_" рдФрд░ рдорд╛рди рдХрд╛ рдкреНрд░рдХрд╛рд░
typeof(TestEnum).GetEnumUnderlyingType()
рд╣реИSystem.RuntimeType
редрдЗрд╕реА рддрд░рд╣ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рднреА рд╡рд┐рдлрд▓ рд╣реЛ рдЬрд╛рдПрдЧрд╛ (рдЙрд╕реА рддрд░рд╣ рдХреЗ рд╕рдВрджреЗрд╢ рдХреЗ рд╕рд╛рде)
рдЬрдмрдХрд┐
рдХрд╛рдо рдХрд░реЗрдЧрд╛ред рдЖрдк рдмрд╛рдзрд╛ рдХреЛ рд╣рдореЗрд╢рд╛
Assert.That(typeof(TestEnum).GetEnumUnderlyingType(), Is.EqualTo(typeof(ushort)));
рд░реВрдк рдореЗрдВ рдлрд┐рд░ рд╕реЗ рд▓рд┐рдЦ рд╕рдХрддреЗ рд╣реИрдВ