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

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

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

, например

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

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

Ответы [ 2 ]

3 голосов
/ 18 ноября 2010

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

Thomas

2 голосов
/ 18 ноября 2010

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

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.
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...