以下是我的功能:
public static StoreMetaData SetUpdateTime(dynamic myObject)
{
var storeMetaData = new StoreMetaData
{
Created = myObject["StoreMetaData"]["Created"], //Facing problem
Updated = DateTime.Now
};
return storeMetaData;
}
我有三个对象:
老师
属性:
public string id{get;set;}
public string name{get;set;}
public StoreMetaData storeMetaData{get;set;}
学生
属性:
public string id{get;set;}
public string name{get;set;}
public StoreMetaData storeMetaData{get;set;}
StoreMetaData
属性:
public DateTime? Created { get; set; }
public DateTime? Updated { get; set; }
我的问题是如何获得“Created = myObject [”StoreMetaData“] [”CreatedDate“]”。
我想在下面的函数中传递我的对象:
我的部分代码:
teacherObj.StoreMetaData.Created = (currentObject.StoreMetaData != null ? currentObject.StoreMetaData.Created : null);
teacherObj.storeMetaData = SetUpdateTime(teacherObj);
OR,
studentObj.StoreMetaData.Created = (currentObject.StoreMetaData != null ? currentObject.StoreMetaData.Created : null);
studentObj.storeMetaData = SetUpdateTime(studentObj);
在行“Created = myObject [”StoreMetaData“] [”CreatedDate“]”它显示错误。什么是正确的格式?
提前致谢。
答案 0 :(得分:1)
完全基于您发布的代码,您的问题是storeMetaData属性是使用小写的第一个字母定义的,但是当您尝试访问它时,您将其指定为大写。
尝试Created = myObject["storeMetaData"]["CreatedDate"];
顺便说一句,我不确定索引器在动态对象上是否像那样工作。我认为他们这样做,但以防万一我会使用点语法来处理属性。
Created = myObject.storeMetaData.CreatedDate;
答案 1 :(得分:0)
希望您传递的是Teacher
或Student
的对象,以便它包含storeMetaData
的定义,您可以访问Created
,这是在{ StoreMetaData
课程。索引器在这个阶段不会帮助你,你应该这样使用:
Created = myObject.StoreMetaData.Created;
答案 2 :(得分:0)
我解决了问题。感谢大家。 :) 以下是我的解决方案:
public static StoreMetaData SetUpdateTime(dynamic myObject)
{
StoreMetaData oStoreMetaData = new StoreMetaData();
oStoreMetaData = myObject.StoreMetaData;
var storeMetaData = new StoreMetaData
{
Created = oStoreMetaData.Created,
Updated = DateTime.Now
};
return storeMetaData;
}