Если я хочу заставить пользователей, получающих Интерфейс, реализовать частный метод / свойство, есть ли какая-то хитрость? - PullRequest
0 голосов
/ 05 декабря 2010

Если я хочу заставить пользователей, получающих Интерфейс, реализовать частный метод, есть ли какая-то хитрость?

Кажется, что я должен быть в состоянии сделать что-то с эффектом:

namespace cc
{
    interface Icd
    {
        int one { get; private set; }
        int two { get; private set; }
    }
}

Я понимаю, почему это не сработает, ведь интерфейс является гарантированным общедоступным интерфейсом для объектов, производных от него, однако должен быть способ заставить кодировщиков, реализующих мой интерфейс, реализовать частную реализацию сеттера. 1006 *

Будет ли абстрактный класс работать в этом случае? Я не хочу определять код, просто заставьте любого, кто реализует мой интерфейс, реализовать частный установщик для свойств.

Редактировать: Да, это C #: -)

Ответы [ 3 ]

3 голосов
/ 05 декабря 2010

Используйте абстрактный базовый класс вместо интерфейса:

public abstract class Foo
{
    public abstract int MyProperty { get; protected set; }
}
2 голосов
/ 05 декабря 2010

Если это личное, кажется, что вы действительно заинтересованы в контроле - это какие-то соглашения по написанию кода внутри компании или что-то в этом роде.Может быть, то, что вы действительно хотите посмотреть, это что-то из вашего программного обеспечения для контроля версий, которое будет отклонять коммиты, которые не следуют правилам?

2 голосов
/ 05 декабря 2010

Вы не можете контролировать реализацию свойства. Период. Заставлять их делать установщик частным не имеет смысла, никто из потребителей интерфейса не мог бы его назвать. Нет смысла объявлять сеттер, который никто не может вызвать в любом случае, может также пропустить его. Теперь он работает , нет установщика для вызова. Это довольно личное.

...