如何序列化"类型"?
我想序列化为XML一个具有属性的对象,该属性是一种对象.这个想法是,当它被反序列化时,我可以创建一个这种类型的对象.
public class NewObject
{
}
[XmlRoot]
public class XmlData
{
private Type t;
public Type T
{
get { return t; }
set { t = value; }
}
}
static void Main(string[] args)
{
XmlData data = new XmlData();
data.T = typeof(NewObject);
try
{
XmlSerializer serializer = new XmlSerializer(typeof(XmlData));
try
{
using (FileStream fs = new FileStream("test.xml", FileMode.Create))
{
serializer.Serialize(fs, data);
}
}
catch (Exception ex)
{
}
}
catch (Exception ex)
{
}
}
Run Code Online (Sandbox Code Playgroud)
我得到此异常:"不期望使用类型ConsoleApplication1.NewObject.使用XmlInclude或SoapInclude属性指定静态未知的类型."
我在哪里放[XmlInclude]?这甚至可能吗?
非常常见的初学者错误是当您尝试"静态"使用类属性而不创建该类的实例时.它会留下您提到的错误消息:
您可以将非静态方法设为静态,也可以使该类的实例使用其属性.
为什么?我不是要求解决方案.我很高兴知道它背后的原因是什么.核心原因!
private java.util.List<String> someMethod(){
/* Some Code */
return someList;
}
public static void main(String[] strArgs){
// The following statement causes the error. You know why..
java.util.List<String> someList = someMethod();
}
Run Code Online (Sandbox Code Playgroud) 说我有这个简单的形式:
class ContactForm(forms.Form):
first_name = forms.CharField(required=True)
last_name = forms.CharField(required=True)
Run Code Online (Sandbox Code Playgroud)
我有一个字段的默认值,但没有另一个字段的默认值.所以我这样设置:
default_data = {'first_name','greg'}
form1=ContactForm(default_data)
Run Code Online (Sandbox Code Playgroud)
但是现在当我去显示它时,Django显示一个验证错误,说明需要last_name:
print form1.as_table()
Run Code Online (Sandbox Code Playgroud)
这样做的正确方法是什么?由于这不是用户提交的数据,只是我想要预填的数据.
注意: required = False不起作用,因为我确实希望在用户提交数据时需要它.就在我第一次在页面上显示表单时,我没有默认值.
在没有深入了解原因的细节的情况下,我正在寻找一种干净(尽可能)的方式来替换可加载模块的内核函数和系统调用.我最初的想法是编写一些代码来覆盖一些函数,这些函数将采用原始函数(如果可能的话,可能会调用函数),然后添加一些我自己的代码.关键是我写的函数必须具有原始函数的名称,因此其他代码在尝试访问它时将访问我的函数.
我可以很容易地(相对地)在内核中直接执行此操作,只需将我的代码放入适当的函数中,但我想知道是否有人知道一点C魔法不一定是可怕的内核(或C)编码实践,可以实现同样的结果.
我想到了#define和typedef的想法,但我不能完全破解它.
简而言之:有没有人知道如何有效地覆盖Linux内核中的函数(来自模块)?
编辑:因为它被问到,我本质上想要从内核中记录某些功能(创建/删除目录等),但为了理智,一个可加载的模块似乎有意义,而不是必须编写一个大补丁内核代码并重新编译每个更改.内核添加的代码量很少,但是我希望将大部分工作卸载到模块中.
如何正确使用VB6我可以像命令行一样调用任何Windows shell命令?
例如,一些简单的事情:
echo foo
Run Code Online (Sandbox Code Playgroud) 在C++中,是否可以使用base和派生类实现单个接口?
例如:
class Interface
{
public:
virtual void BaseFunction() = 0;
virtual void DerivedFunction() = 0;
};
class Base
{
public:
virtual void BaseFunction(){}
};
class Derived : public Base, public Interface
{
public:
void DerivedFunction(){}
};
void main()
{
Derived derived;
}
Run Code Online (Sandbox Code Playgroud)
这会失败,因为Derived无法实例化.就编译器而言,从未定义Interface :: BaseFunction.
到目前为止,我发现的唯一解决方案是在Derived中声明传递函数
class Derived : public Base, public Interface
{
public:
void DerivedFunction(){}
void BaseFunction(){ Base::BaseFunction(); }
};
Run Code Online (Sandbox Code Playgroud)
有没有更好的解决方案?
编辑:如果重要,这是我使用MFC对话框的现实问题.
我有一个从CDialog派生的对话类(MyDialog可以说).由于依赖性问题,我需要创建一个抽象接口(MyDialogInterface).使用MyDialogInterface的类需要使用特定于MyDialog的方法,但还需要调用CDialog :: SetParent.我刚刚通过创建MyDialog :: SetParent并将其传递给CDialog :: SetParent来解决它,但是想知道是否有更好的方法.
这个很贵吗?
我正在开发一个HtmlHelper,它直接呈现给Response.Output以保存不必要的字符串创建,我需要选择:
<% Validator.RenderClient(Response.Output); %>
Run Code Online (Sandbox Code Playgroud)
和
<% Validator.RenderClient(); %>
Run Code Online (Sandbox Code Playgroud)
并从HttpContext.Current.Response获取textWriter
为网站的用户身份验证部分编写代码(包括帐户注册,登录和密码重置)非常简单,但是您需要做出哪些非常好的用户身份验证设置?例如,我认为不存储明文密码是网站的最低要求,但这条建议似乎主要是通过口头传播,而且很多网站仍然无法遵循它.
对网站的用户身份验证部分有什么其他好的建议或好的要求?例如,用户名是应该由用户选择,还是应该是电子邮件地址?用户注册部分的任何陷阱?(CAPTCHAs本身可能值得一个完整的主题.)密码重置部分的任何陷阱?还要别的吗?
这里有些重复:针对登录页面的最佳实践
假设我在各种头文件中都有#define foo.它可能扩展到一些不同的东西.我想知道(当编译.cc文件时)遇到#define时,它将扩展到什么,它是哪个文件以及它包含在哪里.
可能吗?如果没有,是否有任何可能有帮助的部分解决方案?
随意添加评论和澄清请求.
编辑:当有一个#define并且我只想跳到定义或知道定义是什么时,当前答案似乎集中在这种情况下.这是一个简单的案例,是的,您的解决方案是有效的.但是当我在不同的文件中使用相同的#define,并且想要知道哪个#define首先开始时,这些技术都没有用.好吧,我实际上小心翼翼地使用#warning来找到合适的地方.但这需要很多工作.
我在负载平衡的Web服务器环境中使用ASP.NET和WCF服务,在服务层中使用Memcached.
我还想用Memcached替换ASP.NET State Server(用于Session State).现在我担心这不是一件好事,因为根据我的理解,Memcached是缓存服务器而不是状态服务器,是真的吗?
如果我理解正确,Memcached不会将数据分发到Memcached服务器场中的其他节点.相反,使用特殊的散列算法来确定服务器场中的哪个节点包含所请求密钥的数据,而ASP.NET状态服务器在添加数据时尽快分发数据,以防止单点故障.
换句话说,Memcached应仅用于性能原因,存储在其中的数据应始终可重新创建,以防项目被删除以为新对象腾出空间,或者如果单个机器实际存储数据下.
那么我不能仅仅依赖Memcached来存储会话状态数据吗?如果我不能,那么我不明白Memcached如何经常与使用ScaleOut StateServer和ASP.NET State Server进行比较和被视为替代,因为这些实际上是状态服务器,这是另一回事,对吧?
我现在有点不确定Web服务器场中高性能分布式会话状态的最佳方法是什么.
谢谢