在VS2010中,我有一个针对.NET Framework 4.0的项目,然后必须恢复到目标v.3.5.一旦发生这种情况,我所拥有的SplitContainer对象将无法显示并实际抛出错误:"无法将类型为'System.Windows.Forms.SplitContainer'的对象强制转换为'System.ComponentModel.ISupportInitialize'."
现在,我做了一些挖掘,发现3.5实际上并没有在SplitContainer上使用ISupportInitialize,而是在.NET 4.0中.我想我的问题是,如果我的目标是3.5并且仍然遇到此问题,我该如何更正?
重现问题的步骤:
任何有关这方面的帮助将不胜感激!
所有,
我正在尝试执行以下操作:
public class SomClass
{
public boolean x;
public int y;
public String z;
}
SomClass s = new SomClass();
s.x = true;
s.y = 10;
s.z = "ZZZ";
Gson gson = new Gson();
String retVal = gson.toJson(s);
return retVal;
Run Code Online (Sandbox Code Playgroud)
所以这个小片段会产生:
{"x":true,"y":10,"z":"ZZZ"}
Run Code Online (Sandbox Code Playgroud)
但我需要它生产的是:
{"x":0, "y":10,"z":"ZZZ"}
Run Code Online (Sandbox Code Playgroud)
有人可以给我一些选择吗?我不希望将我的布尔值重写为整数,因为这将导致现有代码存在若干问题(非显而易见,难以阅读,难以执行等)
我遇到MySQL的问题,我有以下错误.
MySqlClient.MySqlException: Fatal error encountered during command execution. --->
MySql.Data.MySqlClient.MySqlException: Fatal error encountered attempting to read the resultset. --->
MySql.Data.MySqlClient.MySqlException: Reading from the stream has failed. --->
System.IO.EndOfStreamException: Attempted to read past the end of the stream.
Run Code Online (Sandbox Code Playgroud)
我在夜间运行时会发生此错误.并且它很少发生,所以很难找到为什么会发生这种情况.我使用.NET 3.5与MySQLConnector 6.2.4.0.
我正在使用以下代码运行它.
public DataSet Read(String query, List<KeyValuePair<String, object>> parameters)
{
MySqlDataAdapter adapter = null;
DataSet returnVal = null;
if (query != null && query.Length > 0)
{
try
{
returnVal = new DataSet();
if (connection.State != ConnectionState.Open)
{
connection.Open();
}
query …Run Code Online (Sandbox Code Playgroud) 所有,
我试图在一些古老的java代码中进行一些单元测试(没有接口,没有抽象等)
这是一个使用ServletContext的servlet(我假设它是由Tomcat设置的),并且它在web.xml/context.xml文件中设置了数据库信息.现在,我已经弄清楚如何制作一个假的ServletContext,但代码有
InitialContext _ic = new InitialContext();
Run Code Online (Sandbox Code Playgroud)
到处都是(所以更换它是不可行的).我需要找到一种方法来使默认的InitialContext()能够在_ic.lookup(val)不抛出异常的情况下完成.
我假设有一些方法可以加载context.xml,但是这个魔法是如何工作的,我正在画一个空白.有人有主意吗?
所有,
我使用Parallels.ForEach如下
private void fillEventDifferencesParallels(IProducerConsumerCollection<IEvent> events, Dictionary<string, IEvent> originalEvents)
{
Parallel.ForEach<IEvent>(events, evt =>
{
IEvent originalEventInfo = originalEvents[evt.EventID];
evt.FillDifferences(originalEventInfo);
});
}
Run Code Online (Sandbox Code Playgroud)
好的,所以我遇到的问题是我有28个这样的列表(一个测试样本,这应该可以扩展到200+)和FillDifferences方法非常耗时(每次调用大约4s).因此,在普通ForEach中运行的平均时间大约为100-130秒.当我在Parallel中运行相同的东西时,它需要相同的时间和Spikes我的CPU(Intel I5,2 Core,每个Core 2个线程)导致应用程序在此查询运行时变得迟缓(这是在一个线程上运行这是由GUI线程产生的).
所以我的问题是,我做错了什么导致这花费相同的时间?我读到List不是线程安全的所以我重写了这个以使用IProducerConsumerCollection.是否有任何其他陷阱可能导致这种情况?
FillDifferences方法调用一个静态类,该类使用反射来找出原始对象和修改对象之间存在多少差异.静态对象没有"全局"变量,只有被调用方法的局部变量.
有些人想看看FillDifferences()方法调用了什么.这是最终结束的地方:
public List<IDifferences> ShallowCompare(object orig, object changed, string currentName)
{
List<IDifferences> differences = new List<IDifferences>();
foreach (MemberInfo m in orig.GetType().GetMembers())
{
List<IDifferences> temp = null;
//Go through all MemberInfos until you find one that is a Property.
if (m.MemberType == MemberTypes.Property)
{
PropertyInfo p = (PropertyInfo)m;
string newCurrentName = "";
if (currentName != …Run Code Online (Sandbox Code Playgroud) 我正在为我们的系统与其他系统交互的方式做很多文档,并使用Visio 2010附带的UML Sequence Diagram(Metrics US)形状.当我使用它们时,我遇到以下问题:
我创建一个对象生命线并将其命名为'X'然后我添加另一个对象生命线并将其命名为'y'.我从'X'添加消息到'Y'.到目前为止,这一切都很好.但是如果我删除将"X"连接到"Y"的消息,则对象生命线将自己重命名为Object1和Object2.你可以想象当你有大约10个不同的对象生命线时这是多么令人讨厌,而傻瓜决定因为删除了一条消息而重命名你的所有生命线!
我无法弄清楚它为什么会出现在visio的开发者工具部分中(虽然我绝不是一个Visio dev)
Visio 2010 Premium v.14.0.5128.5000
有人有任何见解吗?
我正在使用MySQL 5.0.27,并试图让交易工作.我按照本教程:
http://dev.mysql.com/doc/refman/5.0/es/connector-net-examples-mysqltransaction.html
仍然无法让这些工作.我试图更新的表是InnoDB,并试图执行'set autocommit = 0'但它似乎没有做任何事情....我写的代码如下:
public int transactionUpdate()
{
MySqlConnection connection = new MySqlConnection(connStr);
connection.Open();
MySqlCommand command = connection.CreateCommand();
MySqlTransaction trans;
trans = connection.BeginTransaction();
command.Connection = connection;
command.Transaction = trans;
try
{
command.CommandText = "SET autocommit = 0";
command.executeNonQuery();
command.CommandText = "UPDATE TBL.rec_lang rl SET rl.lang_code = 'en-us' WHERE rl.recording=123456";
command.executeNonQuery();
command.CommandText = "UPDATE TBL.rec_lang rl SET rl.lang_code = en-us WHERE rl.recording=123456";
command.executeNonQuery();
trans.Commit();
}
catch(Exception ex)
{
try
{
trans.Rollback();
}
catch(MySqlException mse)
{
log.error(mse);
}
} …Run Code Online (Sandbox Code Playgroud) 我正在尝试使用JAXB 2.2.4将接口序列化为XML,但是当我在Map <>对象中有一个接口时,它会爆炸并给我错误:
com.sun.xml.bind.v2.runtime.IllegalAnnotationsException:IllegalAnnotationExceptions的2个计数com.test.IInterface2是一个接口,JAXB无法处理接口.此问题与以下位置有关:at com.test.IInterface2 at public java.util.Map com.test.Interface1Impl.getI2()at com.test.Interface1Impl com.test.IInterface2没有no-arg默认值构造函数.此问题与以下位置有关:在com.test.Interface1Impl上的公共java.util.Map com.test.Interface1Impl.getI2()中的com.test.IInterface2处
如果我删除了Map <>,这个代码已经过测试并且有效,如果我使用List <>,它甚至可以使用它,但是有一些关于JAXB不喜欢的Map <>.
这是我正在运行的代码,如果您知道解决此问题的方法,请告诉我!
package com.test;
import java.io.StringWriter;
import javax.xml.bind.JAXBContext;
import javax.xml.bind.JAXBException;
import javax.xml.bind.Marshaller;
import javax.xml.bind.annotation.XmlSeeAlso;
@XmlSeeAlso({Interface2Impl.class})
public class main
{
/**
* @param args
*/
public static void main(String[] args) {
IInterface1 i1 = new Interface1Impl();
i1.setA("SET A VALUE");
i1.setB("Set B VALUE");
IInterface2 i2 = new Interface2Impl();
i2.setC("X");
i2.setD("Y");
i1.getI2().put("SOMVAL",i2);
String retval = null;
try {
StringWriter writer = new StringWriter();
JAXBContext context = JAXBContext.newInstance(Interface1Impl.class, Interface2Impl.class); …Run Code Online (Sandbox Code Playgroud) 我的位置我有一个大型用户应用程序,有很多表单,我正在寻找一种方法来关闭单个表单,如果由于该表单上捕获的某些逻辑而发生异常.
现在我正在遵循"不要在任何地方写try/catch以捕捉愚蠢的错误"的原则,它确实使我的代码更清晰,但是当我有NullPointerException时会导致整个应用程序崩溃.
最好的解决方案是一个"本地错误处理程序",每个表单都会收集该级别的任何异常,并在那里终止表单而不是冒泡并终止整个应用程序.
有人有主意吗?