У меня есть один метод, как,Как сравнить унаследованный тип с базовым типом?
public function DoSomethingGenricWithUIControls(ByVal incomingData As Object)
//Fun Stuff
End Function
Этот метод будет вызываться и может получить вынесший Page
, UserControl
, или любого другого типа.
Я хочу проверить тип входящего объекта, если это Page
, UserControl
или другого типа.
Но я не смог этого сделать. Всякий раз, когда я пытался использовать GetType()
из typeOf()
на System.Web.UI.UserControl
. Это дает,
'UserControl' is a type in 'UI' and cannot be used as an expression.
Когда я пробовал другие методы, как .IsAssignableFrom()
и .IsSubclassOf()
, но я все еще не в состоянии сделать это.
Еще одно примечание: мои входящие usercontrols
или page
могут быть несколько унаследованы от разных элементов управления/страниц. Поэтому его ближайший базовый тип не относится к System.Web.UI.<Type>
.
Сообщите мне, если у вас возникла путаница. VB/C# любой способ будет работать для меня.
UPDATE
Я попытался, как,
if(ncomingPage.GetType() Is System.Web.UI.UserControl)
Это дает мне такой же вопрос, как и выше,
'UserControl' is a type in 'UI' and cannot be used as an expression.
Вы можете проверить тип с помощью ['is'] (https://msdn.microsoft.com/en-us/library/scekt9xw.aspx) или просто ** попробуйте ** для перевода с помощью' 'as' '(https://msdn.microsoft .com/en-us/library/cscsdfbt.aspx), и если это не 'null' - тогда вам понадобится экземпляр типа. – Sinatr
Я не хочу попадать в кастинг 'try catch', это не очень хорошая практика, и я попытался с' Is', но все тот же вопрос –
Вам не нужно 'try/catch' при использовании' as/null' [проверка] (http://stackoverflow.com/a/2139818/1997232). Можете ли вы опубликовать неработающий код с 'is'? – Sinatr