Как запретить клиентам переопределять ваш сервис на C# с помощью общедоступного интерфейса?C#

Место общения программистов C#
Ответить
Anonymous
 Как запретить клиентам переопределять ваш сервис на C# с помощью общедоступного интерфейса?

Сообщение Anonymous »

Мы разрабатываем пакет NuGet, который клиент может использовать для добавления на свой сайт ASP.NET.

Код: Выделить всё

public interface IOurService {
void DoStuff();
}

public class OurService: IOurService {
public void DoStuff() {
//do things here
}
}

Тогда у нас есть метод регистрации наших сервисов в DI

Код: Выделить всё

public static void AddOurServices(this IServiceCollection services) {
services.AddSingleton();
}
Причина, по которой у нас есть интерфейс IOurService, заключается в том, что клиент хочет имитировать службу в своих модульных тестах. Если служба заблокирована, они говорят, что тестирование сложно.
Однако проблема в том, что они могут переопределить IOurService своей собственной реализацией через DI.

Код: Выделить всё

services.AddOurSerivces();
services.AddSingleton();
Поскольку нам нужен интерфейс, чтобы можно было имитировать сервис, нам нужно сохранить интерфейс и сделать его общедоступным. Однако существует ли какая-либо практика, позволяющая клиентам не заменять нашу реализацию через DI? Если они это сделают, и это не сработает или приведет к ошибкам, они создадут запросы в службу поддержки, и нам придется с этим разобраться. Было бы неплохо, если бы мы могли помешать им взломать библиотеку.


Подробнее здесь: https://stackoverflow.com/questions/793 ... -public-in
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C#»