ΠΠ΄ΡΠ°Π²ΡΡΠ²ΡΠΉΡΠ΅, Ρ Π½Π΅ ΠΌΠΎΠ³Ρ ΡΠ΅ΡΡΠΈΡΠΎΠ²Π°ΡΡ ΡΠΈΠΏΡ ΠΎΠ±ΡΠ΅ΠΊΡΠΎΠ² Ρ ΠΎΠ³ΡΠ°Π½ΠΈΡΠ΅Π½ΠΈΠ΅ΠΌ, Π½ΠΎ ΠΊΠ»Π°ΡΡΠΈΡΠ΅ΡΠΊΠΈΠΉ assert Π²ΡΠ΅ Π΅ΡΠ΅ ΡΠ°Π±ΠΎΡΠ°Π΅Ρ
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>());
ΠΠ°ΠΊΠ°Ρ ΠΏΠ»Π°ΡΡΠΎΡΠΌΠ° ΠΈ ΠΊΠ°ΠΊΠ°Ρ Π²Π΅ΡΡΠΈΡ nunit, ΠΏΠΎΠΆΠ°Π»ΡΠΉΡΡΠ°?
ΠΡΠΈΠ²Π΅Ρ, @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)));