public class SPListItem
{
public override object this[string fieldName]
{
get
{
return this.GetValue(fieldName);
}
set
{
this.SetValue(fieldName, value, !this.HasExternalDataSource);
}
}
}
public class Bar
{
public int Prop1 { get; set; }
public int Prop2 { get; set; }
public int Prop3 { get; set; }
}
有什麼辦法,我可以這樣做:
var fooInst = new SPListItem();
Bar barInst = (Bar)fooInst // or maybe Bar.FromFoo(Foo f) if handling the cast is not possible
,然後有:
barInst.Prop1
給我相當於:
fooInst["Prop"];
沒有爲Bar中的每個屬性實現getter和setter?
你能在你的問題的文字說明你正在試圖解決什麼問題?如果它不繼承或不提供顯式轉換運算符,則不能投射,因此您必須以這種或那種方式映射屬性。 AutoMapper可以爲你做到這一點。 – CodeCaster
[ExpandoObject(https://msdn.microsoft.com/en-us/library/system.dynamic.expandoobject.aspx)就是這樣做的... – m0sa
這是一個錯誤的問題,並沒有任何與鑄造。你問的是如何將POCO的值複製到* SharePoint *服務器端SPListItem對象。 Expando和其他任何對象都無法提供幫助。字段名稱可能與特性的* not *名稱不同。爲什麼不使用LINQ to SharePoint來定義映射? –