Я получил абстрактную комнату с несколькими дочерними классами.У некоторых из этих детей есть свойство MaximumCapacity
.Когда что-то входит в комнату, я хочу, чтобы она проверила, есть ли у этой комнаты собственность, и если да, то что это такое.Я мог бы легко сделать это с помощью переключателя, но я бы не стал (много (повторяющегося) кода).
Только два важных свойства:
MaximumCapacity
: максимумвместимость комнаты, хранящаяся в некоторых комнатах различного типа CurrentPosition
: комната, хранящаяся на объекте, который хочет войти в комнату.
Это то, что у меня сейчас есть:
// HOW :: Store type of Room in order for me to cast with it.
// My Attempt:
Type T = CurrentPosition.GetType(); // Get the type of the Room
// The following doesn't work:
// Build-time exception: "T is used as a variable but is a type"
if ((CurrentPosition as T).GetProperty("Capacity") != null)
{
// Check capacity and enter Room.
}
Я пытался сделать if (int.Parse(CurrentPosition.GetType().GetProperty("MaximumCapacity")) > [number])
Но это дает Can't convert type PropertyInfo to Int
.Это заставляет меня поверить, что я все еще должен привести Комнату к ее обочине (я думаю), чтобы проверить вместимость.
Как мне это сделать?