我之前从未使用过结构。我已经创建了一个简单的例子,说明了我在下面尝试做的事情。我选择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;
}
答案 0 :(得分: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 :(得分:1)
您的问题是myEmailMessage.Attachment = my Attachment;
正在尝试将某些内容分配给名为Attachment
的成员。问题是您的班级上没有名为Attachment
的属性。你声明了一个struct
,但这只是一个声明而且没有创建属性或类似的任何东西。
您需要的是在您的课程中拥有一个实际属性,然后您可以将Attachment
的实例分配给。{/ p>
答案 2 :(得分: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; }
}
}