MethodBase.IsFinal Propriedade
Definição
Importante
Algumas informações se referem a produtos de pré-lançamento que podem ser substancialmente modificados antes do lançamento. A Microsoft não oferece garantias, expressas ou implícitas, das informações aqui fornecidas.
Obtém um valor que indica se esse método é final.
public:
property bool IsFinal { bool get(); };
public bool IsFinal { get; }
member this.IsFinal : bool
Public ReadOnly Property IsFinal As Boolean
Valor da propriedade
true se esse método for final; caso contrário, false.
Implementações
Exemplos
O exemplo a seguir é exibido false para IsFinal, o que pode levar você a pensar que MyMethod é substituível. O código imprime false mesmo que MyMethod não esteja marcado virtual e, portanto, não possa ser substituído.
using System;
using System.Reflection;
public class MyClass
{
public void MyMethod()
{
}
public static void Main()
{
MethodBase m = typeof(MyClass).GetMethod("MyMethod");
Console.WriteLine("The IsFinal property value of MyMethod is {0}.", m.IsFinal);
Console.WriteLine("The IsVirtual property value of MyMethod is {0}.", m.IsVirtual);
}
}
Imports System.Reflection
Public Class MyClass1
Public Sub MyMethod()
End Sub
Public Shared Sub Main()
Dim m As MethodBase = GetType(MyClass1).GetMethod("MyMethod")
Console.WriteLine("The IsFinal property value of MyMethod is {0}.", m.IsFinal)
Console.WriteLine("The IsVirtual property value of MyMethod is {0}.", m.IsVirtual)
End Sub
End Class
Comentários
Se o método virtual estiver marcado final, ele não poderá ser substituído em classes derivadas. O método virtual substituído pode ser marcado final usando a palavra-chave selada na palavra-chave C# ou NotOverridable no Visual Basic. O método também pode ser marcado final implicitamente pelo compilador. Por exemplo, um método pode ser definido como não virtual em seu código, mas implementa um método de interface. O Common Language Runtime requer que todos os métodos que implementam membros da interface devem ser marcados como virtual; portanto, o compilador marca o método virtual final.
Você pode usar essa propriedade, em conjunto com a IsVirtual propriedade, para determinar se um método é substituível. Para que um método seja substituível, IsVirtual a propriedade deve ser true e IsFinal a propriedade deve ser false. Para estabelecer com certeza se um método é substituível, use código como este:
if (MethodInfo.IsVirtual && !MethodInfo.IsFinal)
If MethodInfo.IsVirtual AndAlso Not MethodInfo.IsFinal Then
Se IsVirtual for false ou IsFinal for true, o método não poderá ser substituído.