2017-01-04 27 views
-1

我有一個模型類,每個屬性都映射到一個模型類。如何使用C#中的任務將值分配給對象的屬性

考慮模型類 「Contact

public class Contact 
{ 
    public Profile profileInfo { get; set; } 
    public bool isActive { get; set; } 
} 

public class Profile 
{ 
    public string FirstName { get; set; } 
    public string LastName { get; set; } 
} 

任務相關的C#代碼是

public void MapContact(ref Contact contactInfo)  
{ 
    List<Task> taskList = new List<Task>(); 

    taskList.Add(Task.Factory.StartNew(() => 
    { 
     contactInfo.profileInfo = client.GetProfileInfo(1); 
    })); 

    Task.WaitAll(taskList.ToArray()); 
} 

我得到編譯時錯誤「不能使用ref或out參數「CONTACTINFO 'anonymous method,lambda expression,or query expression「in the following statement

contactInfo.profileInfo = client.GetProfileInfo(1); 

請幫助我如何有效地使用任務而不會產生任何編譯時錯誤。

這裏跟我附上了截圖

enter image description here

+0

'client.GetProfileInfo'的簽名是什麼? –

+0

@lukegv - 配置文件 –

+2

@lukegv - 錯誤與客戶端的簽名無關。GetProfileInfo –

回答

1

只需要聲明的同類型跟一個局部變量,只是通過這個局部變量到任務

C#代碼:

public void MapContact(ref Contact contactInfo) 
{ 
    List<Task> taskList = new List<Task>(); 

    Contact pro = contactInfo; 

    taskList.Add(Task.Factory.StartNew(() => 
     { pro.profileInfo = new Profile() 
      { 
       FirstName = "Stack", 
       LastName = "Overflow" 
      }; 
     })); 

    Task.WaitAll(taskList.ToArray()); 
} 

LinqPad輸出爲 enter image description here

+2

@HenkHolterman - 我們在這裏只給出解決方案或建議,這是我們的極限。如果我們試圖影響提問者,這不是一個健康的討論。由於沒有人應該發佈實際的代碼,我們大多數人都用示例代碼描述了實際情況。我們不知道'ref'的實際用途,所以在這種情況下不要試圖打破問卷的要求,如果你沒有人應該出面提問。這是我謙虛的要求... –

+0

當'ref'不是必需的,那麼你的答案是不需要的。當它是必不可少的,那麼你的答案是不夠的。 –

+0

@HenkHolterman - 愚蠢的指導方針。首先仔細閱讀指南。 「指導方針」是爲我們設計的,這只是爲了簡化討論而不是自殺。如果有人問這個問題,他們會發布一些解決方案,但像你這樣的人認爲我們是上級,我們就是管理員。這是新來者的唯一問題。首先改變態度。 –

相關問題