亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

將屬性包含在謂詞中時出現異常

將屬性包含在謂詞中時出現異常

C#
至尊寶的傳說 2023-07-22 17:01:33
我正在嘗試比較具有多個屬性的兩個對象,但需要使用謂詞來比較特定屬性(object1在 處沒有這些屬性的確切值object2,因此我需要在那里比較部分字符串)。所以,我正在嘗試:object1.Should().BeEquivalentTo(object2,?options?=>?options ????.Including(o?=>?o.Property1.StartsWith("something")) ????.Including(o?=>?o.Property2.StartsWith("something?else") );我希望所有其他屬性都能像往常一樣進行比較。然而,運行上面的代碼會拋出異常:消息:System.ArgumentException:表達式<Convert(o.Property1.StartsWith("something"), Object)>不能用于選擇成員。參數名稱:表達式為什么會出現此異常以及如何修復它?
查看完整描述

1 回答

?
LEATH

TA貢獻1936條經驗 獲得超7個贊

為什么會出現這個異常


發生異常是因為您正在調用函數


.Including(o => o.Property1.StartsWith("something")) //<-- expects property only

在僅期望獲得屬性表達式的表達式中。


.Including(o => o.Property1) //<-- expects property only

引用原始問題中鏈接的相同文檔,您的示例在進行比較時將僅包含指定的成員。


對于您想要做的事情,您應該查看該Equivalency Comparison Behavior部分,根據您的評論,該部分可能類似于以下示例


[TestClass]

public class ObjectEquivalencyTests {

    [TestMethod]

    public void ShouldBeEquivalent() {


        var expected = new MyObject {

            Property1 = "https://www.google.com",

            Property2 = "something else"

        };


        var actual = new MyObject {

            Property1 = "https://www.google.com/search?q=test",

            Property2 = "something else"

        };


        actual.Should().BeEquivalentTo(expected, options => options

            .Using<string>(ctx => ctx.Subject.Should().StartWith(ctx.Expectation))

            .When(info => info.SelectedMemberPath == "Property1")

        );

    }

}


public class MyObject {

    public string Property1 { get; set; }

    public string Property2 { get; set; }

}


查看完整回答
反對 回復 2023-07-22
  • 1 回答
  • 0 關注
  • 114 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號