当我尝试序列化此集合时,name属性未序列化.
public class BCollection<T> : List<T> where T : B_Button
{
public string Name { get; set; }
}
BCollection<BB_Button> bc = new BCollection<B_Button>();
bc.Name = "Name";// Not Serialized!
bc.Add(new BB_Button { ID = "id1", Text = "sometext" });
JavaScriptSerializer serializer = new JavaScriptSerializer();
string json = serializer.Serialize(bc);
Run Code Online (Sandbox Code Playgroud)
只有当我创建一个新类(没有List<t>继承),并定义字符串Name属性和List<B_Button> bc = new List<B_Button>();属性时,我才能得到正确的结果.
将空字符串传递给正则表达式对象时,搜索结果是匹配对象而非None.应该是没有,因为没有什么可以匹配的?
import re
m = re.search("", "some text")
if m is None:
print "Returned None"
else:
print "Return a match"
Run Code Online (Sandbox Code Playgroud)
顺便说一句,使用特殊符号^并$产生相同的结果.
我正在"事务化"一些广泛的数据库操作,我遇到了这个问题,如果我通过hibernate运行sql查询但不使用MQL方法,数据库的视图看起来不正确.具体来说,代码在大多数情况下以更合适的方式使用hibernate,但有些地方有人决定只执行sql.我不喜欢他们这样做,但在这一点上"它就是它".
我发现了一个解释,这似乎解释,但所有的例子都是WRT却越来越和管理代码交易.我们在整个类上使用@TransactionAttribute注释来更改此代码,并且发现了许多发生此行为的地方,但我并不完全相信这些解释适用于简单地包含在注释中的代码 - 我假设任何使用hibernate管理器的东西都依赖于会话中的对象缓存.
如果我通过不正确的术语来指代休眠中的概念等,请提前道歉.
我有一个列表定义为:
var Items = new List<IItem>();
Run Code Online (Sandbox Code Playgroud)
现在有许多不同的类具有该接口,其中一个是耗材.Consumable类也有==运算符重载.现在我有以下代码并且无法正常工作:
if(item1 == item2)
{
//code...
}
Run Code Online (Sandbox Code Playgroud)
这不起作用.我在==运算符重载中设置了一个断点,它永远不会达到它.当我进行逐行调试时,item1和item2都是Consumable类型,GetType都返回Consumable.我甚至尝试这个代码:
var temp = item1.GetType();
var temp2 = item2.GetType();
if (temp == temp2)
{
//code...
}
Run Code Online (Sandbox Code Playgroud)
而这种平等的结果是真实的.现在如果我试试这个:
if(((Consumable)item1) == ((Consumable)item2))
{
//code...
}
Run Code Online (Sandbox Code Playgroud)
这会触发==运算符重载的断点.如果逐行调试显示它已经认为它们都是可消耗的,为什么我必须手动转换变量?是因为我从IItems列表中提取它们吗?
我对此感到有点沮丧,并希望有人能澄清发生了什么.
我想使用我的LINQ-to-SQL数据上下文以编程方式禁用外键约束.看起来这应该像以下一样简单:
context.ExecuteCommand( "ALTER TABLE {0} NOCHECK CONSTRAINT {1}", "MyTable", "FK_MyTable_MyOtherTable" );
不幸的是,这段代码因SQL错误"@ p0'附近的语法不正确"而遭到轰炸.
当我启动分析器时,我发现生成的SQL是:
exec sp_executesql
N'ALTER TABLE @p0 NOCHECK CONSTRAINT @p1',
N'@p0 varchar(4000),@p1 varchar(4000)',
@p0=N'MyTable',
@p1=N'FK_MyTable_MyOtherTable'
Run Code Online (Sandbox Code Playgroud)
从我在SQL Books Online和LINQ-to-SQL文档中可以找到的所有内容中,这应该可行.
我改用了这个:
context.ExecuteCommand( String.Format( "ALTER TABLE {0} NOCHECK CONSTRAINT {1}", "MyTable", "FK_MyTable_MyOtherTable" ) );
它有效,但它有点失败了能够将参数传递给.ExecuteCommand()的目的.
那么这在LINQ-to-SQL,SQL Server中是一种什么样的怪癖,还是我真的很困惑?
任何见解将不胜感激!
我正在使用LINQ和我的数据库Tstamp fileld与Timestamp数据类型.现在我想通过使用LINQ查询从SQL获取数据,它返回System.Data.Linq.Binary数据类型中的Tstamp数据字段值.现在我想以Datetime格式转换这个二进制数据类型值,但是如何?
我是一个类的序列化,但我不能排除我班上的一些字段.
[Serializable]
public class DicData
{
private GDicJson DeserializedGDicJson = new GDicJson();
public UOCDicData BuiltDicData;
[NonSerialized]
public string CacheName = "";
}
Run Code Online (Sandbox Code Playgroud)
在我的预期中,公共字段CacheName未包含在我的*.xml反序列化输出中,但它包含在.xml文件中.
这里是序列化rutine.
XmlSerializer myXml = new XmlSerializer(typeof(DicData), "test");
myXml.Serialize(myFile, this); //note:a serializing perform in method of himself.
Run Code Online (Sandbox Code Playgroud) 我在IE8中测试不支持Object方法时遇到错误.我正在使用Object.keys()
Object.keys(jsoncont).sort(function(a,b){
return b.localeCompare(a)
}).forEach(function(key) {
var val = jsoncont[key];
/* My code here */
});
}
Run Code Online (Sandbox Code Playgroud)
IE8支持这种方法有一个很好的解决方法吗?