Сделайте определенную внутреннюю функцию видимой для другой сборки (то есть не все внутренние компоненты видимы)

Можно указать [assembly: InternalsVisibleTo("NameOfOtherAssembly")] в AssemblyInfo.cs.

Но возможно ли ограничить это конкретными внутренними функциями?

Например, есть ли атрибут, который можно применить к каждой функции?

[InternalVisibleTo("NameOfOtherAssembly")]
internal void ShouldBeVisible()
{}

internal void ShouldNotBeVisible()
{}

Если нет, есть ли другой способ сделать это?

1 ответ

The attribute is applied at the assembly level. 
This means that it can be included at the beginning of a source code file, 
or it can be included in the AssemblyInfo file in a Visual Studio project. 
You can use the attribute to specify a single friend assembly that can access 
the internal types and members of the current assembly.

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

если вы хотите разделить видимые и невидимые методы класса, вы можете сделать следующее:

В одном файле определите видимые методы и отметьте файл как видимый:

InternalsVisibleTo("NameOfOtherAssembly")]
public partial class Foo
{
  internal void Visible(){}
}

В другом файле определите ваши невидимые методы:

public partial class Foo
{
  internal void IsNotVisible(){}
}
Другие вопросы по тегам