我正试图将这个属性设置器的代码移植到。net core。我得到了一个我没有预料到的错误。为什么?有什么不同吗?
/// <remarks>This uses the native .NET datatype, rather than the FHIR equivalent</remarks>
[NotMapped]
[IgnoreDataMemberAttribute]
public Hl7.Fhir.Model.RemittanceOutcome? Outcome
{
get { return OutcomeElement != null ? OutcomeElement.Value : null; }
set
{
if(value == null) // CS00019
OutcomeElement = null;
else
OutcomeElement = new Code<Hl7.Fhir.Model.RemittanceOutcome>(value);
OnPropertyChanged("Outcome");
}
}
错误在Enum?
可选类型的setter中:
CS0019 Operator '==' cannot be applied to operands of type
'RemittanceOutcome?' and '<null>'
类型为public enum RemittanceOutcome
。对于一个可选enum,它是否变得不可能了,或者实现现在不同了?我是否遇到了ASP.net core 1.0.0 rtm中的编译器错误?
这是一个。net核心库中的一个项目。Json格式如下:
{
"version": "1.0.0-*",
"dependencies": {
"NETStandard.Library": "1.6.0",
"Newtonsoft.Json": "9.0.1",
"System.ComponentModel.Annotations": "4.1.0",
"System.ComponentModel.Primitives": "4.1.0",
"System.Diagnostics.Contracts": "4.0.1",
"System.Net.Requests": "4.0.11"
},
"frameworks": {
"netstandard1.6": {
"imports": "dnxcore50"
}
},
"buildOptions": {
"define": [],
"nowarn": [ "CS3016" ]
}
}
将这段代码移植到dnxcore50 (asp.net core 1.0.0 rtm)还有一些其他的惊喜,但是对于初学者来说,这个似乎已经足够了。
示例项目:https://github.com/wpostma/fhir-net-api - branch dnxcore50.
我认为你遇到了一个bug。这应该是可行的。要确认是否可以尝试
if(value.HasValue)
,看看它是否有效?
作为一个可空的Enum,检查HasValue修复问题吗?
。
/// <remarks>This uses the native .NET datatype, rather than the FHIR equivalent</remarks>
[NotMapped]
[IgnoreDataMemberAttribute]
public Hl7.Fhir.Model.RemittanceOutcome? Outcome
{
get { return OutcomeElement != null ? OutcomeElement.Value : null; }
set
{
if(!value.HasValue)
OutcomeElement = null;
else
OutcomeElement = new Code<Hl7.Fhir.Model.RemittanceOutcome>(value);
OnPropertyChanged("Outcome");
}
}