我知道在c#4或4.5中你可以创建匿名类型和动态类型,但我不确定它是如何工作的。 我正在迭代一个sharepoint网站集,我想为每个子网站添加一个项目到列表,有3列
但是我不想为此创建一个类,因为它只针对这个方法。
private void RenderGrid()
{
string currentUrl = SPContext.Current.Site.Url;
List<object> listobject= new List<object>();
SPSecurity.RunWithElevatedPrivileges(delegate()
{
using (SPSite clientSiteCollection = new SPSite(currentUrl))
{
foreach (SPWeb web in clientSiteCollection.AllWebs)
{
string webtemplate = web.Properties["WebTemplate"];
if (webtemplate.Equals("xx"))
{
SPList xx = web.Lists.TryGetList(Constants.Lists.xx);
if (opportunityInfoList != null)
{
opportunityInfo.Add(new object() {
col1 = "value1",
col2 = "value2",
col3 = "value3"
});
}
}
}
}
});
lastCreatedOpportunitiesGrid.DataSource = opportunityInfo;
lastCreatedOpportunitiesGrid.DataBind();
}
答案 0 :(得分:2)
您可以通过在new
声明中不提供特定类型来创建匿名类型:
opportunityInfo.Add(new {
col1="value1",
col2="value2",
col3= "value3"});
这样可行,但您将无法使用opportunityInfo[0].col1
之类的属性,因为您已将该列表明确声明为List<object>
。如果您将其声明为List<dynamic>
,则可以访问匿名类的成员。
(注意:我不确定数据绑定如何与匿名类型一起使用,或者List
的类型是否会产生任何行为差异。)
答案 1 :(得分:1)
Anonymouse没有名字。
只需创建没有名称的新类,这将是您的匿名对象。
opportunityInfo.Add(new {
col1 = "value1",
col2 = "value2",
col3 = "value3"
});