Пакет Nuget — интерфейсы и его реализация в отдельных библиотеках классов

#.net-core #nuget

#.net-core #nuget

Вопрос:

У меня есть вопрос, связанный с пакетом NuGet..

Могу ли я иметь библиотеку классов, которая имеет только интерфейсы, и ее реализация находится в отдельной библиотеке? Кроме того, могу ли я пометить реализацию internal вместо public?

Комментарии:

1. На самом деле вы можете попробовать сами. Библиотека классов на вашем локальном компьютере ничем не отличается от NuGet

Ответ №1:

Can I have a class library that has Interfaces only and it's implementation is in separate library?

ДА. У вас может быть библиотека классов только с классом интерфейса введите описание изображения здесь

И иметь другую библиотеку классов, которая ссылается на эту библиотеку интерфейсов и реализует ее введите описание изображения здесь

Additionally, can I mark the implementation internal instead of public?

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

Но вы можете выполнить реализацию с явным интерфейсом, тогда пользователь может вызвать только метод интерфейса, определив тип экземпляра для этого интерфейса.

 using System;

namespace InterfaceLibrary
{
    public interface IInterface
    {
        public void Do();
    }
}
 
 using System;
using InterfaceLibrary;

namespace ClassLibrary
{
    public class Class : IInterface
    {
        void IInterface.Do()
        {
            Console.WriteLine("Do");
        }
    }
}
 
 // This can find the Do method
IInterface class1 = new Class();
class1.Do();

// This can't find the Do method
Class class2 = new Class();
class2.Do();

 

Комментарии:

1. Спасибо @MichaelMao

2. @bankerbox Не знаю, что вы действительно хотите сделать, не могли бы вы объяснить подробнее?

3. Мне просто нужно было знать, можно ли разделить интерфейс и его реализацию в разных библиотеках классов, если мне нужно создать пакет nuget

4. Как насчет внутренней части?