无法使用Enums隐式转换类型

Roc*_*dev 1 c# asp.net-mvc enums asp.net-mvc-4

尝试解决此问题.似乎无法将一个num分配给另一个,即使它们实际上是相同的.

无法将类型'Project.Models.Concern.YesNo'隐式转换为'Project.ViewModels.PatientConcernsViewModel.YesNo'.存在显式转换(您是否错过了演员?)

public class Concern
{
    public int ConcernID { get; set; }
    public YesNo LifeExpectancy { get; set; }
    public YesNo CollateralHistoryAvailable { get; set; }

    public enum YesNo
    {
        Yes,
        No
    }
}

public class PatientConcernsViewModel
{
    public int ConcernID { get; set; }

    public YesNo LifeExpectancy { get; set; }        
    public YesNo CollateralHistoryAvailable { get; set; }

    public enum YesNo
    {
        Yes,
        No
    }
}

// FROM WITHIN MY CONTROLLER

var concern = concernRepository.Find(id);

// load related assessment data
var assessment = assessmentRepository.Find(AssessmentID);

PatientConcernsViewModel patientConcernsViewModel = new PatientConcernsViewModel();

// BOTH LINES BELOW GENERATE ERRORS            
patientConcernsViewModel.CollateralHistoryAvailable = concern.CollateralHistoryAvailable;
patientConcernsViewModel.LifeExpectancy = concern.LifeExpectancy;
Run Code Online (Sandbox Code Playgroud)

noe*_*cus 5

让你的enum公众没有一个类 - 然后他们可以共享它而无需多个定义.

public enum YesNo
{
    Yes,
    No
}

public class Concern
{
    public int ConcernID { get; set; }
    public YesNo LifeExpectancy { get; set; }
    public YesNo CollateralHistoryAvailable { get; set; }
}

public class PatientConcernsViewModel
{
    public int ConcernID { get; set; }

    public YesNo LifeExpectancy { get; set; }        
    public YesNo CollateralHistoryAvailable { get; set; }
}
Run Code Online (Sandbox Code Playgroud)


Aro*_*ron 5

摆脱你的YesNo枚举并替换它System.Boolean.尽可能使用系统类型.

public class Concern
{
    public int ConcernID { get; set; }
    public bool LifeExpectancy { get; set; }
    public bool CollateralHistoryAvailable { get; set; }
}

public class PatientConcernsViewModel
{
    public int ConcernID { get; set; }

    public bool LifeExpectancy { get; set; }        
    public bool CollateralHistoryAvailable { get; set; }

}
Run Code Online (Sandbox Code Playgroud)