У меня есть класс ac #, предоставляющий некоторые простые классы и некоторые расширения базового класса, такие как этот.
public static Boolean ToBooleanOrDefault(this String s, Boolean Default)
{
return ToBooleanOrDefault((Object)s, Default);
}
public static Boolean ToBooleanOrDefault(this Object o, Boolean Default)
{
Boolean ReturnVal = Default;
try
{
if (o != null)
{
switch (o.ToString().ToLower())
{
case "yes":
case "true":
case "ok":
case "y":
ReturnVal = true;
break;
case "no":
case "false":
case "n":
ReturnVal = false;
break;
default:
ReturnVal = Boolean.Parse(o.ToString());
break;
}
}
}
catch
{
}
return ReturnVal;
}
Класс компилируется нормально и, похоже, не имеет проблем.Затем я сослался на проект в веб-проекте, и VS2010 intellisense распознает расширения базового класса, а F12 / получил переходы к определению исходного кода, как и ожидалось.Однако, когда я компилирую веб-проект, я получаю сообщение об ошибке при каждом использовании расширения базового класса ...
Error 28 'string' does not contain a definition for 'ToBooleanOrDefault'
Мне кажется, что компилятор не использует ссылку, поэтому он игнорирует всю мою базурасширения класса.Идеи?Решение было перенесено с VS2008, где все работало нормально.