'Classes/ActiveBasic/misc.ab

Namespace ActiveBasic
	Namespace Detail
		/*!
		@brief baseがderivedの基底クラスかどうか判定する。
		@param[in] base 基底クラス
		@param[in] derived 派生クラス
		@retval True baseがderivedの基底クラスである
		@retval False 基底クラスでない
		@exception ArgumentNullException 引数のどちらか又は双方がNoghing
		@auther Egtra
		@date 2008/01/21
		*/
		Function IsBaseOf(base As System.TypeInfo, derived As System.TypeInfo) As Boolean
			Imports System
			If IsNothing(base) Then
				Throw New ArgumentNullException("base")
			ElseIf IsNothing(derived) Then
				Throw New ArgumentNullException("derived")
			End If
			Do
				IsBaseOf = derived.Equals(base)
				If IsBaseOf Then
					Exit Function
				End If
				derived = derived.BaseType
			Loop Until IsNothing(derived)
		End Function
	End Namespace

	Function IsNothing(o As Object) As Boolean
		Return Object.ReferenceEquals(o, Nothing)
	End Function
End Namespace
