我正在尝试将对象图从服务器进程移动到客户端.它有效.至少它可以在客户端和服务器都在我的开发虚拟机上时工作.当我在我的基本机器(dev vm上的客户端)上运行服务器时,它也可以工作.
当我在媒体中心PC上运行服务器时,它停止工作.例外是:
二进制流'0'不包含有效的BinaryHeader.可能的原因是序列化和反序列化之间的无效流或对象版本更改.
这三台PC都是x64 Windows 7机器.我正在使用TCPClient和TCPListener以及BinaryFormatter
类来完成繁重的工作.
使用标准FileStream
对象从文件中读取正在传输的数据.
如果在客户端我将缓冲区序列化为文件,那么内容(根据BeyondCompare)确实看起来确实有所不同?!?
我的对象上的所有字符串属性都是在setter中进行Base64编码并在getter中解码.
我可以发布代码,但我不确定问题所在的位置?有任何想法吗?
我之前使用的是L2S,我正在考虑在项目中使用NHib和Sharp Architecture.我已经开始原型设计并遇到了第一个问题,我不知道如何谷歌.
给定一个具有一些简单属性的POCO和一个引用属性(Category - 类未在此处显示):
public class Post
{
public Post()
{
this.DateCreated = DateTime.Now;
}
public virtual string Title {get;set;}
public virtual DateCreated {get;set;}
public virtual Category {get;set;}
}
Run Code Online (Sandbox Code Playgroud)
如果我想以表格格式生成帖子摘要,这是很方便的 - 如果我想要一个名为"类别"的列,并且我想显示类别标题,我可以简单地使用Post.Category.Title.
但是,用户创建新帖子(他们从下拉列表或类似列表中选择一个类别).他们点击提交,然后我新建了一个Post对象.但是,在我可以持久保存新帖子之前,我必须检索一个Category(通过id)的实例来分配给Category属性?
如何充分利用这两个世界?如果我更新Post POCO,使Category成为int,我就更容易创建新实例.但是对于一些渲染代码来说更难,现在必须解析给定Id的类别名称?
我觉得我在这里缺少一些基本概念?
我知道Linq to Sql给出了一个模式,其中Post表有一个名为CategoryId的整数foriegn键列,它将生成基础表列(CategoryId)和包含外键行的EntitySet.
如何在NHibernate中实现类似的效果?这通常如何管理?
谢谢
鉴于要求:
获取对象图,根据第二个字符串属性的处理值设置所有枚举类型属性.约定规定源字符串属性的名称将是具有后缀"Raw"的枚举属性的名称.
通过处理我们意味着我们需要剥离指定的字符等
我看过自定义格式化程序,值解析器和类型转换器,这些都不是解决方案吗?
我们希望使用AutoMapper而不是我们自己的反射例程,原因有两个:a)它在项目的其余部分广泛使用,b)它为您提供递归遍历ootb.
- 示例 -
鉴于下面的(简单)结构,这个:
var tmp = new SimpleClass
{
CountryRaw = "United States",
Person = new Person { GenderRaw="Male" }
};
var tmp2 = new SimpleClass();
Mapper.Map(tmp, tmp2);
Run Code Online (Sandbox Code Playgroud)
我们希望tmp2的MappedCountry枚举为Country.UnitedStates,Person属性的性别为Gender.Male.
public class SimpleClass1
{
public string CountryRaw {get;set;}
public Country MappedCountry {get;set;}
public Person Person {get;set;}
}
public class Person
{
public string GenderRaw {get;set;}
public Gender Gender {get;set;}
public string Surname {get;set;}
}
public enum Country
{
UnitedStates = 1,
NewZealand = …
Run Code Online (Sandbox Code Playgroud) 我们正在使用angular-ui-router(相信版本0.2.10).
到达州有两种主要方式,
我们希望在以下情况下a)验证状态(例如,它是否根据一个或多个业务规则有效),但在情况b)中不这样做,因为我们非常确定我们的应用程序只会转换到有效状态.
情况a)通常需要http往返来执行验证,如果可能的话我们希望避免.
这将如何实施?
谢谢!
我有一个多态模型:
public class CreateOrderRequest
{
public List<CreateOrderItem> OrderItems { get; set; }
}
/// <summary>
/// Identifies a new item within an order
/// </summary>
[JsonConverter(typeof(CreateOrderLineJsonConvertor))]
[KnownType("GetKnownTypes")]
public class CreateOrderItem
{
public string OrderContext { get; set; }
public string OrderItemType { get; set; }
public static Type[] GetKnownTypes()
{
return new[]
{
typeof(OrderItemType1), typeof(OrderItemType2)
};
}
}
public class OrderItemType1: CreateOrderItem
{
public string Type1Prop {get;set;}
}
public class OrderItemType2: CreateOrderItem
{
public string Type2Prop {get;set;}
}
Run Code Online (Sandbox Code Playgroud)
根据文档使用NSwag(NSwag.AspNetCore),我希望这足够了,以便文档指示/包含订单项类型?但不是...
我是否完全错过了NSwag的要求?我有OrderItemType属性。我需要让歧视者参与吗?这在哪里记录? …
给定(设计的)基类,以及我们想要使用XmlSerializer通过WCF序列化的子类.我们根据文章装饰一个集合(参见响应类):
http://msdn.microsoft.com/en-us/library/system.xml.serialization.xmlelementattribute.aspx(请参阅备注部分).
问题是虽然似乎生成了正确的WSDL,但SVCUtil生成一个类文件,其中GetUserResponse类包含名为Items的属性.这与将[XmlElement]应用于数组有关吗?虽然XmlArray元素没有Type属性.
提前致谢.
[Serializable]
[XmlType]
public class UserBase
{
public int Id {get;set;}
}
[Serializable]
[XmlType]
public class BasicUser : UserBase
{
public string UserName {get;set;}
}
[Serializable]
[XmlType]
public class SuperUser : UserBase
{
public string UserName {get;set;}
public bool SpecialLevel {get;set;}
}
[Serializable]
[XmlType]
public class GetUserResponse
{
[XmlElement("Users", typeof(User)), XmlElement("SuperUsers", typeof(SuperUser))]
public List<UserBase> Users {get;set;}
}
Run Code Online (Sandbox Code Playgroud) c# ×4
.net ×1
angularjs ×1
automapper ×1
enums ×1
exception ×1
inheritance ×1
mapping ×1
nhibernate ×1
nswag ×1
poco ×1
polymorphism ×1