Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

183
Visualizações
Propiedad con conjunto interno y obtención protegida

Quiero hacerlo como una variable (llamémosla Foo) que solo se puede modificar dentro del ensamblado pero que puede ser accedida por cualquier clase secundaria, incluso fuera del ensamblado. Así que quiero tener un conjunto interno y una obtención protegida:

Haciendo protected int Foo { internal set; get; } me dice esto que el conjunto debe ser mas restrictivo que la propiedad o indexador Pero internal int Foo { set; protected get; } me dice lo mismo para el get

¿Cómo puedo solucionar eso?

over 4 years ago · Santiago Trujillo
2 Respostas
Responde à pergunta

0

Puede crear un método interno (o una propiedad de proxy) para llamar al conjunto.

 protected int Foo { internal set; get; } internal void SetFoo(int foo) { Foo = foo; }

En este caso, puede configurar el setter de Foo como private .

Tenga en cuenta que esto permite que cualquier cosa en su ensamblaje que tenga una referencia a este objeto pueda llamar a SetFoo , que puede no ser lo que desea.

over 4 years ago · Santiago Trujillo Relatório

0

Uso internal para el colocador e protected internal para toda la propiedad.

 public class X { // Read from this assembly OR child classes // Write from this assembly protected internal int Foo { internal set; get; } }

El nombre protected internal es un poco engañoso, pero hace lo que quieres lograr:

Se puede acceder a un miembro interno protegido desde el ensamblado actual o desde los tipos que se derivan de la clase contenedora.

https://docs.microsoft.com/en-us/dotnet/csharp/language-reference/keywords/protected-internal

Entonces, debido a que el establecedor es internal , puede establecer la propiedad desde cualquier lugar en el mismo ensamblaje pero no desde un ensamblaje diferente. Y debido a que la propiedad en su conjunto está protected internal , puede leerla desde cualquier lugar en el mismo ensamblaje O desde clases secundarias en cualquier ensamblaje.


Otro enfoque:

 public class X { // Read from child classes // Write only from child classes in the same assembly protected int Foo { private protected set; get; } }

Los tipos derivados de la clase contenedora pueden acceder a un miembro protegido privado, pero solo dentro de su ensamblaje contenedor.

https://docs.microsoft.com/en-us/dotnet/csharp/language-reference/keywords/private-protected

over 4 years ago · Santiago Trujillo Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda