2014-09-05 86 views
1

我從來沒有使用過結構。我已經創建了一個簡單的示例,說明了我在下面要做的事情。我選擇struts的原因是因爲對象永遠不需要存在於類的上下文之外。謝謝。如何將結構實例賦值給包含該結構的類?

public class EmailAddress 
{ 
    public string Email { get; set; } 

    public string Name { get; set; } 
} 


public class EmailMessage 
{ 
    public EmailAddress To { get; set; } 

    public EmailAddress From { get; set; } 

    public string Subject { get; set; } 

    public string Body { get; set; } 

    public struct Attachment 
    { 
     public string Name { get; set; } 

     public string Bas64 { get; set; } 
    } 

嘗試方法

protected void MyMethod() 
{ 
    var myEmailMessage = new EmailMessage 
    { 
     To = { Email = "ToEmailAddress" }, 
     From = { Email = "FromEmailAddress" } 
    }; 

    var myAttachment = new EmailMessage.Attachment 
    { 
     Name = "AttachmentName", 
     Bas64 = "Base64String" 
    }; 

    myEmailMessage.Attachment = myAttachment; 
} 
+2

你得到什麼錯誤? – 2014-09-05 09:22:26

+0

您的電子郵件沒有「附件」 – Sayse 2014-09-05 09:24:05

+0

考慮閱讀[在類和結構之間選擇](http://msdn.microsoft.com/en-us/library/ms229017(v = vs.110).aspx )。我沒有理由在這裏使用'struct'。 – 2014-09-05 09:53:13

回答

4

您不能使用struct聲明爲類的屬性。您應該分割該屬性和實際的struct定義。

試試這個:

public _Attachment Attachment {get;set;} /* Attachment as property */ 

public struct _Attachment /* The definition of the struct */ 
{ 
    public string Name { get; set; } 

    public string Bas64 { get; set; } 
} 

而且使用這樣的:

var myAttachment = new EmailMessage._Attachment 
{ 
    ... 
} 

順便說一句:有一個struct沒有真正的需要。使用class也可以。

1

你的問題是myEmailMessage.Attachment = my Attachment;正在嘗試將某些東西分配給名爲Attachment的成員。問題在於你的班級沒有名爲Attachment的房產。你已經聲明瞭一個叫做struct的函數,但這只是一個聲明,不會創建一個屬性或其他類似的東西。

你需要的是在你的課堂上有一個實際的屬性,然後你可以指定一個Attachment的實例。

1

您的EmailMessage類沒有Attachment屬性,只有Attachment嵌套類型。

您應該Attachment結構重命名爲EmailAttachment爲了避免名稱衝突,並創建一個Attachment屬性:

public class EmailMessage 
{ 
    public EmailAddress To { get; set; } 

    public EmailAddress From { get; set; } 

    public string Subject { get; set; } 

    public string Body { get; set; } 

    public EmailAttachment Attachment { get; set; } 

    public struct EmailAttachment 
    { 
     public string Name { get; set; } 

     public string Bas64 { get; set; } 
    } 
} 
相關問題