FieldInfo.IsFamilyAndAssembly 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 a visibilidade do campo é ou não descrita por FamANDAssem, ou seja, o campo pode ser acessado de classes derivadas, mas somente se elas estiverem no mesmo assembly.
public:
property bool IsFamilyAndAssembly { bool get(); };
public bool IsFamilyAndAssembly { get; }
member this.IsFamilyAndAssembly : bool
Public ReadOnly Property IsFamilyAndAssembly As Boolean
Valor da propriedade
true
se o acesso a esse campo for exatamente descrito por FamANDAssem; caso contrário, false
.
Implementações
Exemplos
O exemplo de código a seguir define campos com diferentes níveis de visibilidade e exibe os valores de suas IsAssemblypropriedades , IsFamily, IsFamilyOrAssemblye IsFamilyAndAssembly .
using namespace System;
using namespace System::Reflection;
public ref class Example
{
public:
int f_public;
internal:
int f_internal;
protected:
int f_protected;
protected public:
int f_protected_public;
protected private:
int f_protected_private;
};
void main()
{
Console::WriteLine("\n{0,-30}{1,-18}{2}", "", "IsAssembly", "IsFamilyOrAssembly");
Console::WriteLine("{0,-21}{1,-18}{2,-18}{3}\n",
"", "IsPublic", "IsFamily", "IsFamilyAndAssembly");
for each (FieldInfo^ f in Example::typeid->GetFields(
BindingFlags::Instance | BindingFlags::NonPublic | BindingFlags::Public))
{
Console::WriteLine("{0,-21}{1,-9}{2,-9}{3,-9}{4,-9}{5,-9}",
f->Name,
f->IsPublic,
f->IsAssembly,
f->IsFamily,
f->IsFamilyOrAssembly,
f->IsFamilyAndAssembly
);
}
}
/* This code example produces output similar to the following:
IsAssembly IsFamilyOrAssembly
IsPublic IsFamily IsFamilyAndAssembly
f_public True False False False False
f_internal False True False False False
f_protected False False True False False
f_protected_public False False False True False
f_protected_private False False False False True
*/
using System;
using System.Reflection;
public class Example
{
public int f_public;
internal int f_internal;
protected int f_protected;
protected internal int f_protected_public;
private protected int f_private_protected;
public static void Main()
{
Console.WriteLine("\n{0,-30}{1,-18}{2}", "", "IsAssembly", "IsFamilyOrAssembly");
Console.WriteLine("{0,-21}{1,-18}{2,-18}{3}\n",
"", "IsPublic", "IsFamily", "IsFamilyAndAssembly");
foreach (FieldInfo f in typeof(Example).GetFields(
BindingFlags.Instance | BindingFlags.NonPublic | BindingFlags.Public))
{
Console.WriteLine("{0,-21}{1,-9}{2,-9}{3,-9}{4,-9}{5,-9}",
f.Name,
f.IsPublic,
f.IsAssembly,
f.IsFamily,
f.IsFamilyOrAssembly,
f.IsFamilyAndAssembly
);
}
}
}
/* This code example produces output similar to the following:
IsAssembly IsFamilyOrAssembly
IsPublic IsFamily IsFamilyAndAssembly
f_public True False False False False
f_internal False True False False False
f_protected False False True False False
f_protected_public False False False True False
f_private_protected False False False False True
*/
Imports System.Reflection
Public class Example
Public f_Public As Integer
Friend f_Friend As Integer
Protected f_Protected As Integer
Protected Friend f_Protected_Friend As Integer
Private Protected f_Private_Protected() As Integer
Public Shared Sub Main()
Console.WriteLine(vbCrLf & _
"{0,-30}{1,-18}{2}", "", "IsAssembly", "IsFamilyOrAssembly")
Console.WriteLine("{0,-21}{1,-18}{2,-18}{3}" & vbCrLf, _
"", "IsPublic", "IsFamily", "IsFamilyAndAssembly")
For Each f As FieldInfo In GetType(Example).GetFields( _
BindingFlags.Instance Or BindingFlags.NonPublic Or BindingFlags.Public)
Console.WriteLine("{0,-21}{1,-9}{2,-9}{3,-9}{4,-9}{5,-9}", _
f.Name, _
f.IsPublic, _
f.IsAssembly, _
f.IsFamily, _
f.IsFamilyOrAssembly, _
f.IsFamilyAndAssembly _
)
Next
End Sub
End Class
' This code example produces output similar to the following:
'
' IsAssembly IsFamilyOrAssembly
' IsPublic IsFamily IsFamilyAndAssembly
'
'f_Public True False False False False
'f_Friend False True False False False
'f_Protected False False True False False
'f_Protected_Friend False False False True False
'f_Private_Protected False False False False True
Comentários
Se um campo tiver FamANDAssem visibilidade de nível, ele poderá ser chamado de qualquer membro em uma classe derivada que também esteja no mesmo assembly, mas não de qualquer outro tipo.
A visibilidade de um campo é exatamente descrita por FieldAttributes.FamANDAssem se o modificador de visibilidade está private protected
em C#, Private Protected
no Visual Basic ou protected private
em C++.