c#逻辑中的三元条件未按预期工作
我在c#中写了一个三元条件,它的计算不正确。我正在检查这两个条件是否都满足,然后它应该返回true,否则返回false。目前,即使有一个条件失败,它也会返回true。因此,即使docType为Flashnotes为true,canView也会设置为true。考虑这个IOC。 始终返回true,docType可能返回true,也可能不返回truec#逻辑中的三元条件未按预期工作,c#,C#,我在c#中写了一个三元条件,它的计算不正确。我正在检查这两个条件是否都满足,然后它应该返回true,否则返回false。目前,即使有一个条件失败,它也会返回true。因此,即使docType为Flashnotes为true,canView也会设置为true。考虑这个IOC。 始终返回true,docType可能返回true,也可能不返回true doc.canView = IoC.Resolve<IClientAuthorizationService>().Authorize("Pu
doc.canView = IoC.Resolve<IClientAuthorizationService>().Authorize("Put", "ManageDocuments") ==
AuthAccessLevel.Full && i.DOCUMENT_TYPE_ID != (int) DocumentType.FlashNotes ||
i.DOCUMENT_TYPE_ID != (int)DocumentType.CallMeetingNotes ||
i.DOCUMENT_TYPE_ID != (int)DocumentType.OtherNotes ||
i.DOCUMENT_TYPE_ID != (int)DocumentType.TearSheet
? true
: false;
doc.canView=IoC.Resolve().Authorize(“Put”,“ManageDocuments”)==
AuthAccessLevel.Full&&i.DOCUMENT\u TYPE\u ID!=(int)DocumentType.FlashNotes||
i、 文档类型ID!=(int)DocumentType.CallMeetingNotes |
i、 文档类型ID!=(int)DocumentType.OtherNotes |
i、 文档类型ID!=(int)DocumentType.TearSheet
? 真的
:假;
如果我正确理解了这一点,I.DOCUMENT\u TYPE\u ID
条件之一必须等于true
?添加括号,使第一个括号相等
doc.canView = IoC.Resolve<IClientAuthorizationService>().Authorize("Put", "ManageDocuments") ==
AuthAccessLevel.Full && (i.DOCUMENT_TYPE_ID == (int) DocumentType.FlashNotes ||
i.DOCUMENT_TYPE_ID == (int)DocumentType.CallMeetingNotes ||
i.DOCUMENT_TYPE_ID == (int)DocumentType.OtherNotes ||
i.DOCUMENT_TYPE_ID == (int)DocumentType.TearSheet)
doc.canView=IoC.Resolve().Authorize(“Put”,“ManageDocuments”)==
AuthAccessLevel.Full&(i.DOCUMENT\u TYPE\u ID==(int)DocumentType.FlashNotes||
i、 DOCUMENT_TYPE_ID==(int)DocumentType.CallMeetingNotes|
i、 DOCUMENT_TYPE_ID==(int)DocumentType.OtherNotes ||
i、 文档类型(ID==(int)DocumentType.TearSheet)
此外,也没有必要对真实或错误,因为它已经是一个布尔 如果我正确理解了这一点,
I.DOCUMENT\u TYPE\u ID
conditions必须等于true
?添加括号,使第一个括号相等
doc.canView = IoC.Resolve<IClientAuthorizationService>().Authorize("Put", "ManageDocuments") ==
AuthAccessLevel.Full && (i.DOCUMENT_TYPE_ID == (int) DocumentType.FlashNotes ||
i.DOCUMENT_TYPE_ID == (int)DocumentType.CallMeetingNotes ||
i.DOCUMENT_TYPE_ID == (int)DocumentType.OtherNotes ||
i.DOCUMENT_TYPE_ID == (int)DocumentType.TearSheet)
doc.canView=IoC.Resolve().Authorize(“Put”,“ManageDocuments”)==
AuthAccessLevel.Full&(i.DOCUMENT\u TYPE\u ID==(int)DocumentType.FlashNotes||
i、 DOCUMENT_TYPE_ID==(int)DocumentType.CallMeetingNotes|
i、 DOCUMENT_TYPE_ID==(int)DocumentType.OtherNotes ||
i、 文档类型(ID==(int)DocumentType.TearSheet)
此外,也没有必要对真实或错误,因为它已经是一个布尔 这是一个操作顺序问题。您可以了解有关订购的更多信息:
doc.canView=IoC.Resolve().Authorize(“Put”,“ManageDocuments”)==
AuthAccessLevel.Full&(i.DOCUMENT\u TYPE\u ID!=(int)DocumentType.FlashNotes&&
i、 DOCUMENT_TYPE_ID!=(int)DocumentType.CallMeetingNotes&&
i、 DOCUMENT_TYPE_ID!=(int)DocumentType.OtherNotes&&
i、 文档类型\u ID!=(int)文档类型.TearSheet)
? true//包含冗余代码,但用于显示三元运算符
:假;
这是一个操作顺序问题。您可以了解有关订购的更多信息:
doc.canView=IoC.Resolve().Authorize(“Put”,“ManageDocuments”)==
AuthAccessLevel.Full&(i.DOCUMENT\u TYPE\u ID!=(int)DocumentType.FlashNotes&&
i、 DOCUMENT_TYPE_ID!=(int)DocumentType.CallMeetingNotes&&
i、 DOCUMENT_TYPE_ID!=(int)DocumentType.OtherNotes&&
i、 文档类型\u ID!=(int)文档类型.TearSheet)
? true//包含冗余代码,但用于显示三元运算符
:假;
我认为这里的逻辑有错误。尝试:
doc.canView = IoC.Resolve<IClientAuthorizationService>().Authorize("Put", "ManageDocuments") ==
AuthAccessLevel.Full && !(i.DOCUMENT_TYPE_ID == (int) DocumentType.FlashNotes ||
i.DOCUMENT_TYPE_ID == (int)DocumentType.CallMeetingNotes ||
i.DOCUMENT_TYPE_ID == (int)DocumentType.OtherNotes ||
i.DOCUMENT_TYPE_ID == (int)DocumentType.TearSheet);
doc.canView=IoC.Resolve().Authorize(“Put”,“ManageDocuments”)==
AuthAccessLevel.Full&!(i.DOCUMENT_TYPE_ID==(int)DocumentType.FlashNotes||
i、 DOCUMENT_TYPE_ID==(int)DocumentType.CallMeetingNotes|
i、 DOCUMENT_TYPE_ID==(int)DocumentType.OtherNotes ||
i、 文档类型(ID==(int)DocumentType.TearSheet);
我认为这里的逻辑有错误。尝试:
doc.canView = IoC.Resolve<IClientAuthorizationService>().Authorize("Put", "ManageDocuments") ==
AuthAccessLevel.Full && !(i.DOCUMENT_TYPE_ID == (int) DocumentType.FlashNotes ||
i.DOCUMENT_TYPE_ID == (int)DocumentType.CallMeetingNotes ||
i.DOCUMENT_TYPE_ID == (int)DocumentType.OtherNotes ||
i.DOCUMENT_TYPE_ID == (int)DocumentType.TearSheet);
doc.canView=IoC.Resolve().Authorize(“Put”,“ManageDocuments”)==
AuthAccessLevel.Full&!(i.DOCUMENT_TYPE_ID==(int)DocumentType.FlashNotes||
i、 DOCUMENT_TYPE_ID==(int)DocumentType.CallMeetingNotes|
i、 DOCUMENT_TYPE_ID==(int)DocumentType.OtherNotes ||
i、 文档类型(ID==(int)DocumentType.TearSheet);
我认为您试图做的事情可以简化为以下内容:
var rejectedTypes = new[] { DocumentType.FlashNotes, DocumentType.CallMeetingNotes,
DocumentType.OtherNotes, DocumentType.TearSheet }.Cast<int>();
var accessLevel = IoC.Resolve<IClientAuthorizationService>()
.Authorize("Put", "ManageDocuments");
doc.canView = ((accessLevel == AuthAccessLevel.Full) &&
!rejectedTypes.Contains(i.DOCUMENT_TYPE_ID));
var rejectedTypes=new[]{DocumentType.FlashNotes,DocumentType.CallMeetingNotes,
DocumentType.OtherNotes,DocumentType.TearSheet}.Cast();
var accessLevel=IoC.Resolve()
.授权(“出售”、“管理文件”);
doc.canView=((accessLevel==AuthAccessLevel.Full)&&
!rejectedTypes.Contains(即文档类型ID));
我认为您试图做的事情可以简化为以下内容:
var rejectedTypes = new[] { DocumentType.FlashNotes, DocumentType.CallMeetingNotes,
DocumentType.OtherNotes, DocumentType.TearSheet }.Cast<int>();
var accessLevel = IoC.Resolve<IClientAuthorizationService>()
.Authorize("Put", "ManageDocuments");
doc.canView = ((accessLevel == AuthAccessLevel.Full) &&
!rejectedTypes.Contains(i.DOCUMENT_TYPE_ID));
var rejectedTypes=new[]{DocumentType.FlashNotes,DocumentType.CallMeetingNotes,
文档类型。