我有一个应用程序,它支持某些设备的多种类型和版本.它可以连接到这些设备并检索各种信息.
根据设备的类型,我有(除其他外)一个可以包含各种属性的类.某些属性对所有设备都是通用的,有些属性对于特定设备是唯一的.
此数据序列化为xml.
实现一个类的首选方法是什么,它将支持这些设备的未来版本中的未来属性,以及向后兼容以前的应用程序版本?
我可以想到几种方法,但我发现它们都不是很好:
value对象)XmlInclude或自定义序列化来反序列化派生类,不与以前的xml架构向后兼容(虽然通过实现自定义序列化我可以跳过未知属性?),需要强制转换来访问派生类中的属性.顺便说一句,我正在使用C#.
我有.Net的RichTextBox控件的问题.它似乎不支持表格单元格格式化,这很有趣,因为大多数时候我创建表格我希望单元格内容是右对齐的(数字,货币).
如果我尝试在RichTextBox中打开写字板文档,它会忽略(并实际删除)用于单元格对齐的命令.我尝试了几种解决方法,但没有成功.
谁能想到解决这个问题的想法?(不使用固定宽度的字体和空格)这将是最好的解决方案,因为其他代码已经正常工作,所以如果只需要的东西是一个肮脏的黑客,它会很棒.
或者,您可以推荐使用.Net Rich Text Editor的开源替代方案吗?我需要一个用户控件,我可以嵌入我的Windows窗体并以编程方式访问内容(创建内容或附加内容).我在网上搜索了一段时间,但发现只有web(Ajax/Javascript)控件.
我也可以使用HTML WYSIWYG编辑器,但它们基本上都是使用MSHTML嵌入和编辑的IE浏览器,在Winforms应用程序中使用它感觉有点奇怪(也许我错了).在这种情况下,我们需要一些额外的时间来实现HTML的内容生成器 - 尽管它比RTF恕我直言更容易阅读和生成.
你们为此目的最好的是什么?
我最近在这里问了一个问题,有人提供了这个答案:
private void button1_Click(object sender, EventArgs e)
{
var client = new WebClient();
Uri X = new Uri("http://www.google.com");
client.DownloadStringCompleted += (s, args) => //THIS, WHAT IS IT DOING?
{
if (args.Error == null && !args.Cancelled)
{
MessageBox.Show();
}
};
client.DownloadStringAsync(X);
}
Run Code Online (Sandbox Code Playgroud)
那是什么=>做什么?这是我第一次看到这个.
我想创建多对多关系,但我希望在新表(MessageReceivers)中对两个列都有唯一的约束(AdvanceMessageId,UserId):
mapping.HasManyToMany(x => x.Receivers)
.WithParentKeyColumn("AdvanceMessageId")
.WithChildKeyColumn("UserId")
.Cascade.All()
.LazyLoad()
.WithTableName("MessageReceivers");
Run Code Online (Sandbox Code Playgroud)
感谢帮助
我在Visual Studio 2008中逐步调试多线程.NET应用程序时遇到问题.
随着每个阶梯线,Visual Studio变得越来越慢(跳转到下一行需要越来越多的时间)并且通常在几行之后挂起(我得到"Visual Studio忙"气球提示),我需要停止调试.
我怀疑问题是由于应用程序连接了几个TCP/IP客户端,这意味着每次我创建一个断点,他的网络缓冲区都会被填满,直到我继续我的应用程序.每当我使用F10步骤到下一行代码时,Visual Studio会很快唤醒所有其他线程以便它们处理输入数据.
有没有人有这些问题的经验,以及如何避免这些问题的建议?
有没有办法直接使用Win32Native命名空间?
我想直接调用该方法:
Win32Native.SendMessageTimeout(new IntPtr(0xffff), 0x1a, IntPtr.Zero, "Environment", 0, 0x3e8, IntPtr.Zero) == IntPtr.Zero;
Run Code Online (Sandbox Code Playgroud)
而不是声明它:
[DllImport("user32.dll", SetLastError = true, CharSet = CharSet.Auto)]
public static extern IntPtr SendMessageTimeout(IntPtr hWnd, int Msg, IntPtr wParam, string lParam, uint fuFlags, uint uTimeout, IntPtr lpdwResult);
Run Code Online (Sandbox Code Playgroud)
有这样的机会吗?
至于我知道void函数中的return语句将引发错误
但是在下面的程序中不是这样
这里显示输出1,为什么?
main()
{
int i=5;
printf("%d",fun(fun(fun(i))));
}
void fun(int i)
{
if (i%2)
{
return (i+(7*4)-(5/2)+(2*2));
}
else
{
return (i+(17/5)-(34/15)+(5/2));
}
}
Run Code Online (Sandbox Code Playgroud) 我有不可变的对象,我希望延迟计算其哈希码。我已经实施了
private bool _HasHashCode = false;
private int _HashCode;
public override int GetHashCode()
{
if (_HasHashCode)
return _HashCode;
long hashCode;
unchecked
{
hashCode = Digits;
hashCode = (hashCode*397) ^ XI;
hashCode = (hashCode*397) ^ YI;
hashCode = (int) ( hashCode % Int32.MaxValue);
}
// is it possible that these two write instructions
// get reordered on a certain .NET/CPU architecture
// combination:
_HashCode = (int)hashCode;
_HasHashCode = true;
return _HashCode;
}
Run Code Online (Sandbox Code Playgroud)
我的推理是,32 位 _HashCode 成员是 32 位,写入它是原子的,因此即使由于设置 _HasHashCode 属性时的竞争条件而运行两次计算也没关系 …
我有一个愚蠢的问题.我有一个数据库,我需要获得第二项不仅是第一项.我打开第一个简单的方法
var source = _context.SourceLogs.Where(a => a.SourceID == user.ID).First()
但我不知道如何打开第二个.我是C#的新手,所以我唯一想到的就是这个
var source = _context.SourceLogs.Where(a => a.SourceID == user.ID).First(-1)
但这显然不起作用.任何形式的帮助表示赞赏.谢谢.
对不起,如果我问的是非常基本的问题,
我有一组Web服务(使用.Net WebApi开发).这些服务是业务层或数据访问层API.这些API要么依赖于其他服务,要么依赖于数据库本身.
我想为它编写单元测试用例.我有以下问题
由于业务层API依赖于数据访问服务或其他一些服务.如果我只是为了调用业务API而编写单元测试,那么它将调用数据访问API.这是编写单元测试用例的正确方法吗?或者我应该使用单元测试注入所有依赖项对象?我认为之前的一个是集成测试而不是单元测试.
我应该为数据访问层编写单元测试吗?我检查了这个链接(编写数据访问代码测试:单元测试是浪费),它说DAL不需要单元测试.我还应该为数据访问层编写测试吗?我认为这将是集成测试而不是单元测试?
c# ×6
.net ×3
c ×1
c#-3.0 ×1
debugging ×1
html-editor ×1
inheritance ×1
linq ×1
many-to-many ×1
memory-model ×1
moq ×1
oop ×1
richtextbox ×1
rtf ×1
unique ×1
unit-testing ×1
wysiwyg ×1