Наследование класса, который реализует IValidatableObject от. NET Framework до. NET Standard - PullRequest
2 голосов
/ 30 января 2020

У меня есть две библиотеки - первая в. NET Framework 4.6.1, а вторая в. NET Standard 2.0. (Второй зависит от первого)

. NET Framework 4.6.1 содержит следующий класс

    public class Class_Framework : IValidatableObject
    {
        public IEnumerable<ValidationResult> Validate(ValidationContext validationContext)
        {
            Console.WriteLine();
            return null;
        }
    }

, тогда я пытаюсь использовать этот класс во втором. NET Стандартная библиотека 2.0:

    interface IStandardInterface
    {
        string AProperty { get; set; }
    }

    class Class_Standard : Class_Framework, IStandardInterface
    {
        public string AProperty { get; set; }
    }

    public class MainStandardClass
    {
        public void AMethod()
        {
            IStandardInterface anInstance = new Class_Standard();
        }
    }

Я не могу скомпилировать этот код из-за следующей ошибки:

The type 'IValidatableObject' is defined in an assembly that is not referenced. You must add a reference to assembly 'System.ComponentModel.DataAnnotations, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35'

Я осведомлен, что нет Библиотека DataAnnotations в. NET стандарте, поэтому я использовал NuGet System.ComponentModel.Annotations в. NET Standard и. NET Framework библиотеке. Самое странное, что если я поменяю

IStandardInterface anInstance = new Class_Standard();

на

var anInstance = new Class_Standard();

, то все в порядке. Есть ли у вас какие-либо предположения о том, как / если возможно наследовать класс, реализующий IValidatableObject, из библиотеки. NET Framework? Спасибо

1 Ответ

0 голосов
/ 30 января 2020

Не выполнимо, точка. Библиотека Netstandard 2.0 может наследоваться только от библиотеки Netstandard 2.0, а не от полной библиотеки. NET.

Это по определению.

Вам придется либо разделить иерархии классов, либо переместить другая библиотека окончена. Мы не знаем достаточно, чтобы рекомендовать здесь достойный подход.

...