I have this interface:
public interface IValidationCRUD { public ICRUDValidation IsValid(object obj); private void AddError(ICRUDError error); }
But when I use it (Implement Interface, automatic generation of code), I get this:
public class LanguageVAL : IValidationCRUD { public ICRUDValidation IsValid(object obj) { throw new System.NotImplementedException(); } public void AddError(ICRUDError error) { throw new System.NotImplementedException(); } }
The method AddError is public and not private as I wanted.
How can I change this?
An interface can only have public methods. You might consider using an abstract base class with a protected abstract method AddError
for this. The base class can then implement the IValidationCRUD
interface, but only after you have removed the private method.
like this:
public interface IValidationCRUD { ICRUDValidation IsValid(object obj); } public abstract class ValidationCRUDBase: IValidationCRUD { public abstract ICRUDValidation IsValid(object obj); protected abstract void AddError(ICRUDError error); }
A private member makes no sense as part of an interface. An interface is there to define a set of methods, a role, an object must always implement. Private methods, on the other hand, are implementation details, not intended for public consumption.
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