O que é o equivalente a uma palavra-chave 'amigo' em C afiada?
-
22-07-2019 - |
Pergunta
O que é o equivalente a uma palavra-chave 'amigo' em C afiada?
Como faço para usar o 'interno' palavra-chave?
Eu li essa palavra-chave 'interno' é um substituto para o 'amigo' em C #.
Eu estou usando um DLL no meu projeto C # que eu tenho o código fonte e ainda assim eu não quero modificar o código existente. Eu ter herdado a classe e eu posso usar minha classe herdada de qualquer maneira que eu quero. O problema é que a maior parte do código na classe pai tem métodos protegidos. Irá usar um amigo de algum modo tornar possível o acesso ou chamar esses métodos protegidos?
Solução
-
Você pode usar a palavra-chave de acesso modificador
internal
para declarar um membro do tipo ou tipo como acessível ao código na mesma montagem única. -
Você pode usar o
InternalsVisibleToAttribute
classe definida emSystem.Rutime.CompilerServices
para declarar um tipo como acessíveis ao código no mesmo conjunto ou de um conjunto especificado única.
Você pode usar o primeiro como você usa qualquer outro acesso modificador tais como private
. A saber:
internal class MyClass {
...
}
Você pode usar o segundo da seguinte forma:
[assembly:InternalsVisibleTo("MyFriendAssembly", PublicKey="...")]
internal class MyVisibleClass {
...
}
Ambos podem ser justamente considerado o equivalente a friend
em C #.
Os métodos que são protected
já estão disponíveis para classes derivadas.
Outras dicas
Não, "interno" não é o mesmo que "amigo" (pelo menos o C ++ 'amigo')
especifica amigo que esta classe só é acessível por um, em particular classe.
especifica internos que esta classe é acessível por qualquer classe na montagem.
1) Interno é o C # equivelant do VB.NET 'amigo' palavra-chave, como você já deve ter adivinhado (em oposição a uma substituição)
2) O uso é como se segue
internal void Function() {}
internal Class Classname() {}
internal int myInt;
internal int MyProperty { get; set; }
3) É, basicamente, é um modificador de acesso, que estipula que a acessibilidade da classe / função / propriedade / vairiable marcado como interno é como se fosse público à Assembleia que é compilado, e privado de quaisquer outros conjuntos
Seu subclasse será capaz de acessar os membros protected da classe você herda.
Você está olhando para dar acesso a esses membros protegidos para outra classe?
Interno é o equivalente do amigo. Um método protegido só está disponível dentro da mesma classe ou de uma inheritor. Se você está tentando expor métodos protegidos de um herdeiro, você pode envolvê-los em métodos públicos.