среда, 6 июня 2007 г.

Friends из C++ в C#

NUnit.
Вопрос: где разместить код теста.
Проблема: чтобы достучаться до закрытых методов и полей класса.
Решение: reflection или внутри сборки.

На самом деле эта проблема может быть решена с использование модификатора доступа "friend", который был в С++, но отсутствует с языке С#.

Теперь это можно сделать декларативно. В нашем классе объявить друзей:


[assembly:InternalsVisibleTo("cs_friend_assemblies_2")]
class Class1 ...

А используем так:

// compile with: /reference:cs_friend_assemblies.dll /out:cs_friend_assemblies_2.exe
public class M
{
static void Main()
{
Class1 a = new Class1();
...


http://msdn2.microsoft.com/en-gb/library/0tke9fxk.aspx
http://www.infoq.com/news/2007/06/Friend-Assemblies

Комментариев нет:

Отправить комментарий