I was having the problem of wanting a property to have an internal getter and a protected setter, as described in this question, and I thought I solved that by doing the following:
public class Accessor : AccessorBase
{
private Connection _connection;
protected void setConnection(Connection value)
{
_connection = value;
}
internal Connection GetConnection()
{
return _connection;
}
...
}
However, I'm now getting this error:
Inconsistent accessibility: parameter type 'Connection' is less accessible than method 'setConnection(Connection)'
This is because I have internal class Connection
. I would rather not make Connection
a public class, while Accessor
needs to be public, so how can I get around this error while still maintaining an internal getter and a protected setter?
Unfortunately C# doesn't support "internal and protected" access modifiers (only "internal or protected" is supported), which means any protected
members are visible outside the assembly and can't use an internal type.
Using internal
instead of protected
would be the most logical solution.
And you could vote at Microsoft Connect so that it might be added to C# someday.
Update: as of C# 7.2 you can use private protected
for this.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With