C# 如何在C中将entitybase类型转换为entity类型#

C# 如何在C中将entitybase类型转换为entity类型#,c#,asp.net-mvc,entity-framework,type-conversion,C#,Asp.net Mvc,Entity Framework,Type Conversion,我在.NET 3.5中尝试了下面的代码,但在注释中显示的行中出现异常: 无法将类型“tunpayed”转换为“ClassLibrary1.Unpaid” 如何在.NET3.5中修复此问题 namespace ClassLibrary1 { public class EntityBase { public virtual void Save<T>(T dok) where T : EntityBase, new() { }

我在.NET 3.5中尝试了下面的代码,但在注释中显示的行中出现异常:

无法将类型“tunpayed”转换为“ClassLibrary1.Unpaid”

如何在.NET3.5中修复此问题

namespace ClassLibrary1
{
    public class EntityBase
    {
        public virtual void Save<T>(T dok) where T : EntityBase, new()
        {
        }
    }

    public class Unpaid : EntityBase
    {
        public override void Save<TUnpaid>(TUnpaid dok)
        {
            // Cannot convert type 'TUnpaid' to 'ClassLibrary1.Unpaid'  
            var kup = (Unpaid)dok;
        }
    }
}
命名空间类库1
{
公共类实体库
{
公共虚拟void Save(T dok),其中T:EntityBase,new()
{
}
}
公共类:EntityBase
{
公共覆盖无效保存(TUNDOK)
{
//无法将类型“TunPayed”转换为“ClassLibrary1.Unpaid”
var kup=(未付)dok;
}
}
}

您应该编写一个,或者编写一个方法(或类)来建立


在代码示例中,您使用两种不同的类型(
tunpayed
Unpaid
),它们之间没有任何联系。

您应该编写一个,或者编写一个方法(或类)来建立


在代码示例中,您使用两种不同的类型(
tunpayed
Unpaid
),它们之间没有连接。

如果您将EntityBase类设置为泛型,我认为您可以解决此问题:

public class EntityBase<T>
{
    public virtual void Save<T>(T dok) where T : EntityBase<T>, new()
    {
    }
}

public class Unpaid : EntityBase<Unpaid>
{
    public override void Save<Unpaid>(Unpaid dok)
    {
        // dok is now of type Unpaid and doesn't need the cast
    }
}
公共类EntityBase
{
公共虚拟void Save(T dok),其中T:EntityBase,new()
{
}
}
公共类:EntityBase
{
公共覆盖无效保存(未付dok)
{
//dok现在是无报酬类型,不需要演员阵容
}
}

如果将EntityBase类设置为泛型,我认为可以解决此问题:

public class EntityBase<T>
{
    public virtual void Save<T>(T dok) where T : EntityBase<T>, new()
    {
    }
}

public class Unpaid : EntityBase<Unpaid>
{
    public override void Save<Unpaid>(Unpaid dok)
    {
        // dok is now of type Unpaid and doesn't need the cast
    }
}
公共类EntityBase
{
公共虚拟void Save(T dok),其中T:EntityBase,new()
{
}
}
公共类:EntityBase
{
公共覆盖无效保存(未付dok)
{
//dok现在是无报酬类型,不需要演员阵容
}
}

谢谢。我重构了代码,并将Save方法移动到entity方法,这样就不需要进行泛型类型传递。在实体方法内部,可以使用此方法,不需要类型参数。谢谢。我重构了代码,并将Save方法移动到entity方法,这样就不需要进行泛型类型传递。在可以使用的实体方法中,类型参数不是必需的