Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

182
Views
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 answers
Answer question

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 Report

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 Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!