我有2个网络应用程序,应该相互发送序列化的protobuf-net消息.我可以序列化对象并发送它们,但是,我无法弄清楚如何反序列化接收的字节.
我尝试使用它反序列化,并且失败并出现NullReferenceException.
// Where "ms" is a memorystream containing the serialized
// byte array from the network.
Messages.BaseMessage message =
ProtoBuf.Serializer.Deserialize<Messages.BaseMessage>(ms);
Run Code Online (Sandbox Code Playgroud)
我在包含消息类型ID的序列化字节之前传递一个标头,我可以在一个巨大的switch语句中使用它返回预期的sublcass Type.使用下面的块,我收到错误:System.Reflection.TargetInvocationException ---> System.NullReferenceException.
//Where "ms" is a memorystream and "messageType" is a
//Uint16.
Type t = Messages.Helper.GetMessageType(messageType);
System.Reflection.MethodInfo method =
typeof(ProtoBuf.Serializer).GetMethod("Deserialize").MakeGenericMethod(t);
message = method.Invoke(null, new object[] { ms }) as Messages.BaseMessage;
Run Code Online (Sandbox Code Playgroud)
这是我用来通过网络发送消息的功能:
internal void Send(Messages.BaseMessage message){
using (System.IO.MemoryStream ms = new System.IO.MemoryStream()){
ProtoBuf.Serializer.Serialize(ms, message);
byte[] messageTypeAndLength = new byte[4];
Buffer.BlockCopy(BitConverter.GetBytes(message.messageType), 0, messageTypeAndLength, 0, 2);
Buffer.BlockCopy(BitConverter.GetBytes((UInt16)ms.Length), 0, …
Run Code Online (Sandbox Code Playgroud) 改变源控制分支,运行更新的数据库的回滚到先前的迁移之后,EF有时会显示文本"还原自动迁移",象下面这样:
Reverting automatic migration: 201305171619008_DescriptiveNameForMigration.
Reverting code-based migration: 201305162023299_Init.
Run Code Online (Sandbox Code Playgroud)
实体框架如何确定迁移应该是自动的,它的作用有何不同?
以下是如何重现它,假设您已经设置了一个已经设置了代码优先迁移的项目:
这就是我认为正在发生的事情,如果我错了,请纠正我.
我应该如何在iPhone上创建类似于Springboard(主屏幕)的UI?我想要一个均匀间隔的按钮网格和图像,我可以响应按钮.
UITable是否合适?我应该使用普通的UIView并在DrawRect中手动定位图标吗?是否有替代方案可以自动均匀分隔按钮,允许重新组织,并根据iPhone方向调整布局?
我来自C#/ Winforms背景,现在我正在使用2.2.1标题在Open Toolchain上开始iPhone开发.
当我列出当前AppDomain中的所有类型时,我会看到带有通用占位符的泛型类型.但是,如果我使用类型实例化我的泛型类型,然后列出appDomain中的所有类型,我看不到新创建的封闭类型.
在下面的示例中,输出仅为:
Foo`1[T]
Run Code Online (Sandbox Code Playgroud)
我正在寻找封闭式:
Foo`1[System.Int32]
Run Code Online (Sandbox Code Playgroud)
有没有办法根据我的开放泛型类型查看运行时为我创建的封闭类型?
class Foo<T>
{
}
class Program
{
static void Main(string[] args)
{
var tmp = new Foo<int>();
ListTypes();
}
private static void ListTypes()
{
var types = from assembly in AppDomain.CurrentDomain.GetAssemblies()
from type in assembly.GetTypes()
where type.Name.Contains("Foo")
select type;
foreach (var type in types)
Console.WriteLine(type.ToString());
}
}
Run Code Online (Sandbox Code Playgroud)
我也尝试通过泛型参数找到所有类型,以期发现封闭类型.
class Foo<T>
{
}
class Bar
{
}
class Program
{
static void Main(string[] args)
{
var tmp = new Foo<Bar>();
ListTypes();
}
private static void …
Run Code Online (Sandbox Code Playgroud) 我需要获取查询结果:
var query = from m in db.SoilSamplingSubJobs where m.order_id == id select m;
Run Code Online (Sandbox Code Playgroud)
并准备作为ICollection,以便我可以有类似的东西
ICollection<SoilSamplingSubJob> subjobs
Run Code Online (Sandbox Code Playgroud)
目前我创建了一个不符合我需求的列表:
query.ToList();
Run Code Online (Sandbox Code Playgroud)
我该怎么办 - 是query.ToIcollection()?
使用实体框架LINQ,我想为每个父表返回一个父类,并在父类上使用接口的多个具体实现之一填充其类型为接口的属性.应根据父表中字段的值在查询时确定哪个具体实现.
在一个非常简单的例子中,我有3个表和3个相应的POCO.
简单的表格,例如
简单的类为了举例
internal interface IConfiguration
{
}
internal class ConfigurationContainer
{
public IConfiguration Config { get; set; }
}
internal class ConfigurationSouth : IConfiguration
{
}
internal class ConfigurationNorth : IConfiguration
{
}
Run Code Online (Sandbox Code Playgroud)
不幸的是,我循环遍历所有父结果并确定在循环内使用哪个子查询.事情像这个块.
foreach (var configMaster in db.ConfigMasters.ToList())
{
var configContainer = new ConfigurationContainer();
if (configMaster.IsNorth)
configContainer.Config = (from x in db.ConfigNorths
select new ConfigurationNorth())
.FirstOrDefault();
else
configContainer.Config = (from x in db.ConfigSouths
select new ConfigurationSouth())
.FirstOrDefault();
}
Run Code Online (Sandbox Code Playgroud)
循环遍历每个父记录以执行子查询不是最佳的.我真的很喜欢EF LINQ在一次数据库中执行查询以及对我的POCO进行预测.
我想出了这个LINQ来一次查询数据库并返回投影对象,以便在查询时由两个子查询中的一个填充Config属性.虽然它编译,但它会在运行时抛出异常.
using (var db = …
Run Code Online (Sandbox Code Playgroud) 我有这样的代码:
NSData *data = [NSData dataWithContentsOfURL:objURL];
const void *buffer = [data bytes];
[self _loadData:buffer];
[data release];
Run Code Online (Sandbox Code Playgroud)
"_loadData"函数采用如下参数:
- (void)_loadData:(const char *)data;
Run Code Online (Sandbox Code Playgroud)
如何在Objective-C上将"const void "转换为"const char "?
.net ×2
c# ×1
casting ×1
clr ×1
cocoa-touch ×1
const ×1
database ×1
generics ×1
icollection ×1
iphone ×1
list ×1
objective-c ×1
pointers ×1
polymorphism ×1
protobuf-net ×1
uibutton ×1
uitableview ×1