【问题标题】:Inheritance a class that implements IValidatableObject from .NET Framework to .NET Standard继承从 .NET Framework 到 .NET Standard 实现 IValidatableObject 的类
【发布时间】:2020-01-30 13:03:30
【问题描述】:

我有两个库 - 第一个在 .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 Standard 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'

我知道 .NET 标准中没有 DataAnnotations 库,因此我在 .NET Standard 和 .NET Framework 库中都使用了 NuGet System.ComponentModel.Annotations。最奇怪的是,如果我改变了

IStandardInterface anInstance = new Class_Standard();

到

var anInstance = new Class_Standard();

然后一切正常。您对如何/是否可以从 .NET Framework 库继承实现 IValidatableObject 的类有任何建议吗?谢谢

【问题讨论】:

    标签: c# .net data-annotations .net-standard


    【解决方案1】:

    不可行,期间。 netstandard 2.0 库只能从 netstandard 2.0 库继承,而不是完整的 .NET 库。

    这是根据定义。

    您要么必须拆分类层次结构,要么将其他库移过来。我们还不够了解,无法在这里推荐一个体面的方法。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-12-04
      • 2021-03-15
      • 1970-01-01
      • 2020-09-19
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多