Я пытался настроить модульный тест для частного внутреннего класса, но не имел большого успеха:
namespace Stats.Model
{
public class DailyStat
{
private class DailyStatKey // The one to test
{
private DateTime date;
public DateTime Date
{
get { return date; }
set { date = value.Date; }
}
public StatType Type { get; set; }
public override int GetHashCode()
{
return Date.Year * 1000000 +
Date.Month * 10000 +
Date.Day * 100 +
(int)Type;
}
public override bool Equals(object obj)
{
DailyStatKey otherKey = obj as DailyStatKey;
if (otherKey == null)
return false;
return (this.Date == otherKey.Date && this.StatType == otherKey.StatType);
}
}
}
}
Я пробовал этот код:
PrivateType statKeyType = new PrivateType("Stats.Model", "Stats.Model.DailyStat.DailyStatKey");
также как и
PrivateType statKeyType = new PrivateType("Stats.Model", "DailyStat.DailyStatKey");
Но безрезультатно.
Имя сборки "Stats.Model", и мне имя типа тоже кажется правильным, но я просто получаю исключение: "System.TypeLoadException: Не удалось загрузить тип"
Так что я делаю неправильно?
PrivateType, насколько мне известно, основан на отражении, и я предполагаю, что он в значительной степени предназначен для этого сценария, поскольку вы не можете иметь частный класс непосредственно под пространством имен.
РЕДАКТИРОВАТЬ:
Добавлена полная реализация DailyStatKey. Что я хочу проверить, так это уникальность моего метода GetHashCode. Как видите, я пытаюсь вписать дату + тип в одно целое.