Как я могу ограничить доступ к методам, разрешив только определенную сборку доступ к ним?

Есть ли атрибут, который я могу использовать для ограничения доступа к методам или сборкам?

(Я работаю в C#, .Net 3.5)

например

[RestrictionAttribute(//Specify an assembly or a key or something here)]
Public void MyMethod()
{
    //Do something...
}

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

2 ответа

Решение

Вы можете использовать internal ключевое слово вместо public для вашего класса (ов), а затем использовать InternalsVisibleTo приписывать.

Томас

Без использования атрибутов вы можете сделать что-то вроде:

using System.Reflection;
using System.Security;

protected const string AUTHORIZED_CALLER
    = "YourTrustedAssembly, Version=1.0.0.0, Culture=neutral, PublicKeyToken=7bb5a56c4391e80f";

public void MyMethod()
{
    if (Assembly.GetCallingAssembly().FullName != AUTHORIZED_CALLER) {
        throw new SecurityException("Unauthorized method call.");
    }

    // Now do something.
}
Другие вопросы по тегам