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?

Foi útil?

Solução

  1. 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.

  2. Você pode usar o InternalsVisibleToAttribute classe definida em System.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.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top