Подтвердить что ты не робот

Возможно ли разбить интерфейс на 2 частичных интерфейса и реализовать его в 2 частичных классах?

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

Но сегодня я наткнулся на икоту, что мне нужно как-то решить. Скажем, мне нужно расширить следующий интерфейс.

public partial interface ICondition
{
  void MethodA();
  void MethodB();
}

сделав интерфейс частичным и добавив файл под названием ICondition.CompanyName.cs

public partial interface ICondition
{
  void MethodC();
}

теперь то, что я хочу сделать, - реализовать интерфейс так же, как я его объявил, с MethodA() и MethodB() реализованы в одном файле частичного класса и MethodC() в другом.

public partial class Condition : ICondition
{
   public void MethodA(){ }
   public void MethodB(){ }
}

и мой класс Condition.CompanyName.cs

public partial class Condition : ICondition
{
   public void MethodC() { }
}

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

Изменить

Это действительно работает, моя проблема в том, что у меня были 2 частичных класса в разных пространствах имен из-за глупой опечатки. Я начал слишком рано сегодня утром, полагаю, спасибо всем за ваше время и внимание.

4b9b3361

Ответ 1

Вам не нужно иметь частичный интерфейс в этом экземпляре, вы все равно сможете разместить методы там, где хотите.

Это, конечно, не работает, так как интерфейс должен быть реализован в том же файле

Я не вижу, как ваш пример не работает, я просто сделал следующее:

partial interface IFoo
{
    void One();
    void Two();
}

partial class Class1 : IFoo
{
    public void Two()
    { }

    public void Three()
    { }
}

В одном файле.

partial interface IFoo
{
    void Three();
}

partial class Class1 : IFoo
{
    public void One()
    { }
}

В другом...

Ответ 2

Возможно, ваши частичные классы не находятся в одной и той же сборке?

В противном случае ваш пример должен работать нормально...