Есть ли способ защитить вашу сборку до уровня класса/свойства и класса/метода, чтобы предотвратить использование/вызов из другой сборки, которая не подписана нашей компанией?
Я хотел бы сделать это без каких-либо требований к сильному наименованию (например, используя StrongNameIdentityPermission) и придерживаться того, как подписывается сборка. Я действительно не хочу прибегать к использованию атрибута InternalsVisibleTo, поскольку он не поддерживается в постоянно меняющейся экосистеме программного обеспечения.
Например:
Сценарий 1
Foo.dll подписана моей компанией, а Bar.dll не подписано.
Foo имеет класс A Бар имеет класс B
Класс A имеет открытый метод GetSomething() Класс B пытается вызвать Foo.A.GetSomething() и отклоняется
Отклонено может быть исключением или быть проигнорировано каким-то образом
Сценарий 2
Foo.dll подписана моей компанией, а Moo.dll также подписана моей компанией.
Foo имеет класс A Moo имеет класс C
Класс A имеет открытый метод GetSomething() Класс C пытается вызвать Foo.A.GetSomething() и не отклоняется