我试图转换一个对象说用户有多个字段到XML.问题是我在尝试序列化ILIST成员时遇到异常.以下是我使用的代码:
var stringwriter = new System.IO.StringWriter();
var serializer = new XmlSerializer(User.GetType()); <!-- Getting exception here -->
serializer.Serialize(stringwriter, User);
return stringwriter.ToString();
Run Code Online (Sandbox Code Playgroud)
我的用户看起来像这样:
class User
{ public virtual string Name{ get; set; }
public virtual DateTime? LastUpdated { get; set; }
public virtual int? ContactId { get; set; }
public virtual IList<Sector> Sectors { get; set; }
public virtual AccessLevel AccessLevel { get; set; }
public virtual IList<UserRole> UserRole { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
有没有办法可以检查我正在序列化的对象的类成员是否可序列化,然后调整该特定成员的逻辑.我对用户类的控制较少.:(所以任何方式,我可以扩展我的代码来处理IList成员将是首选.
请参阅下面的代码
1. persons = Items.Select(item => componentResolver.ResolvePerson(new TridionUri(item.Id))).ToList();
2. persons.Each(person => person.AdditionalInfo); // gives null reference exception
Run Code Online (Sandbox Code Playgroud)
ResolvePerson看起来像:
public Person ResolvePerson(TridionUri personUri)
{
Person person = publicationResolverService.GetPerson(personUri);
if (author != null)
{
person.Id = personUri.ItemId.ToString();
}
return person;
}
Run Code Online (Sandbox Code Playgroud)
现在的问题是,"项目"包含一个人不存在的ID.所以我的'ResolvePerson'返回null.这导致第2行中的例外.我只能控制ResolvePerson方法.有没有办法可以跳过没有人在场的personUri而不是返回null?
我有一个asp.net应用程序,其中包含位于多个文件夹中的页面.我的.js文件也在一个"JS"文件夹中,我在主页的头部添加了他们的引用,如:
<script type="text/javascript" src="JS/jquery.min.js"></script>
Run Code Online (Sandbox Code Playgroud)
现在,当我在主页上时,脚本加载正常.但是,当我在另一个文件夹(例如物理)中的其他页面上时,路径会被追加,因此我得到错误:
无法加载资源:服务器响应状态为404(未找到)
类似的事情也发生在我的图像路径和<a>标签上.
现在我想提供关于根路径的路径,例如:
~/JS/VerticalMenu.js
Run Code Online (Sandbox Code Playgroud)
但这~并没有把我带到我的应用程序的根源.我需要设置~应该导致的位置吗?如果是,那么在哪里以及如何?
我有一个父类列表,包含由子类组成的对象项.例如
Class Vehicle
{
String Name;
}
Class Car: Vehicle
{
int Speed;
}
Class Bike: Vehicle
{
int Milage;
}
List<Vehicle> transports = new List<Vehicle>;
transports.Add(new Car{Name = "Fiat", Speed = 70});
transports.Add(new Bike{Name = "Bajaj", Milage = 70});
transports.Add(new Car{Name = "BMW", Speed = 100});
Run Code Online (Sandbox Code Playgroud)
现在我要删除速度为100的汽车类型的物品.我该怎么做.优先通过linq