Проблема возникает между проектом типа Xamarin. IOS и библиотекой .NetStandard2.0. Я создал небольшое решение ( ссылка здесь ), демонстрирующее проблему. Для этого в проекте Xamarin используется ньюгетик Newtonsoft.
Ситуация: в проекте .NetStandard у меня есть один объект, содержащий одно свойство (в моем случае, свойство типа HttpStatusCode) с пользовательским атрибутом. определение значения по умолчанию для этого свойства.
public class TestObject
{
[DefaultValue(HttpStatusCode.OK)]
public HttpStatusCode Code { get; set; }
}
В проекте Xamarin я создал один тест, в котором был создан объект типа, созданного в проекте .NetStandard, и попытался его сериализовать.
[Test]
public void Test()
{
TestObject obj = new TestObject(code: HttpStatusCode.Accepted);
JsonConvert.SerializeObject(obj);
}
При запуске теста возвращается следующая ошибка: System.TypeLoadException: Could not load type System.Net.HttpStatusCode, netstandard, Version = 2.0.0.0, Culture = neutral, PublicKeyToken = cc7b13ffcd2ddd51 while decoding custom attribute: (null )
В моей ситуации требуется, чтобы архитектура, определенная в csproj, имела тип * ARMv7 + ARM64 * для ради совместимости со старыми Ipads, которые мы должны поддерживать. Я упоминаю об этом, потому что знаю, что выбор Поведение компоновщика до Ссылка всех и Поддерживаемых архитектур до ARM64 делает тестовый проход без проблем.
Редактировать
Ответ на вопрос Почему нужно использовать 2 проекта : На самом деле решение, представленное в этом посте, является лишь небольшим отрывком из гораздо большего проекта. В этом проекте мы предоставляем Windows версию (.NetCore 3.1) и IOS версию (Xamarin. IOS) приложения. Чтобы разделить наши модели между этими двумя различными проектами, мы хотели бы использовать библиотеку типов .NetStandard вместо разделения этой библиотеки на проекты Windows и IOS. Мы открыты для других предложений архитектурного решения, если это может решить нашу проблему, но пока это все, что у нас есть.
Если у вас есть какие-либо дополнительные вопросы о проблеме и ее контексте, не стесняйтесь спрашивать.
Заранее спасибо за помощь