小编ang*_*son的帖子

.NET和Silverlight之间共享代码的可行性?

刚刚经历了一个小型的实验会议,试图看看将我们的.NET类库或至少部分内容库带入Silverlight所需的工作量,以便我们可以在两个世界之间重用业务逻辑,我是想知道其他人是否有这种事情的经验.

我注意到的事情,在我的头顶:

  • 丢失了很多属性(例如可浏览(错误))
  • 很多接口丢失或存在,但是空(ICloneable被隐藏,缺少ITypedList)
  • 反思差异(一切都可以公开)
  • 一些基类差异(没有组件?)

所以我想知道,我甚至认为这是可行的吗?

我得到了初始代码,但我不得不注释掉很多基本功能,主要是处理列表,因为它们基于ITypedList和一些基类.显然我需要在Silverlight中更改为ObservableCollection,因此需要更改整个基本代码才能应对.

我创建的实际业务测试类与我为.NET制作的实际业务测试类相同,只有一些微小的更改,这些更改在.NET中也很容易使用,就像我在查看之前所做的那样. Silverlight的.换句话说,如果我可以使基类兼容,那么共享业务逻辑看起来是可行的.

就这样我很清楚,我所说的是我基本上有两个项目文件,一个用于.NET,一个用于Silverlight,但实际的C#源代码将是相同的,在两者之间共享.

那么有没有人有这方面的经验?任何提示或指南?

它值得吗?它肯定值得更多关注.

.net c# silverlight sharing

5
推荐指数
1
解决办法
964
查看次数

用于在网页上显示源代码的格式

我正在研究Markdown命令行程序,我想在html输出中格式化源代码块比简单更好<pre><code>....</code></pre>.

我的标准是:

  1. 我想要在每行前面显示行号
  2. 我希望代码本身是可选择的,这样我只能将代码(而不是行号)复制到剪贴板

我试图使用DIV,因为表似乎格式不好,但我对任何事情持开放态度.

我尝试了什么:

  • 具有单行的表,单元1是预/代码格式的行号块,单元2是源代码.问题:带行号的第一列总是占用大量空间(自动调整宽度似乎变得困惑)
  • 具有多行的表,与具有1行的一行相同的问题
  • DIV,我似乎无法让DIV以我想要的方式布局

任何人都可以给我一个如何获得我想要的指针吗?

这是一个示例(明显的限制是我使用Markdown来显示这里的示例):

01 |  Source code line 1
02 |  Source code line 2
03 |  Last line of source code
Run Code Online (Sandbox Code Playgroud)

现在,如果我在第一行单击并选择,并向下拖动多行,我不希望选择包含行号列,否则这将很容易.

那么,任何指针?

我不需要的一个奖励功能是,如果我使窗口太窄而不能包含源代码,我不需要将它分成两行.我能理解该功能如何工作的唯一方法是单独格式化每一行,而不是单独格式化每一行,以便在发生换行时调整行号.由于我希望只能复制源代码,因此我认为我需要自己格式化每个列.

这是我尝试过的东西:

<html><body>
<style>
.lines
{
    background-color: #c0c0ff;
    border-left: 1px solid black;
    border-top: 1px solid black;
    border-bottom: 1px solid black;
    float: left;
    border-right: 1px solid #a0a0a0;
    margin-left: 20px;
    padding-left: 2px;
    padding-right: 2px;
}
.code
{
    background-color: #c0c0ff;
    border-top: 1px solid black;
    border-bottom: 1px solid black;
    float: …
Run Code Online (Sandbox Code Playgroud)

html css

5
推荐指数
1
解决办法
8504
查看次数

足够调用Children.Clear在WPF画布上删除旧控件之前添加新控件?

我正在尝试使用WPF并重新实现我的旧迷宫屏幕保护程序.

我的代码基本上将一堆图像添加到画布,并排构建一个网格,64x64像素图像,以覆盖整个画布.然后我通过调整平移变换并交换图像,在迷宫中"动画"运动,该运动应该围绕迷宫滚动.

但是,我似乎有某种泄漏.每当我调整窗口大小时,我都想重新构建图像组件,以便再次覆盖表单,或者使用更多或更少的图像.

如果我将形式的左下角拖动到紧密的圆圈中,则重建部分会变得越来越慢.

要删除旧控件我只是这样做:

_Canvas.Children.Clear();
Run Code Online (Sandbox Code Playgroud)

这够了吗?由于减速,我认为不是.

然而,由于迷宫目前没有被"头像""发现",迷宫图像以25%的不透明度绘制,我认为如果我没有移除它们,我会得到很多图像在彼此之上,但它似乎也不是那样.

我正在缓存图像源,图像组件是这样创建的:

_Images = new Image[(int)width, (int)height];
for (int x = -1; x < width - 1; x++)
{
    for (int y = -1; y < height - 1; y++)
    {
        Image i = new Image();
        i.Width = 64;
        i.Height = 64;
        i.Source = _Outside;
        Canvas.SetLeft(i, x * 64);
        Canvas.SetTop(i, y * 64);
        _Canvas.Children.Add(i);
        _Images[x + 1, y + 1] = i;
    }
}
Run Code Online (Sandbox Code Playgroud)

之后他们会分配图像来显示如下:

Maze.Square sq = _Maze[_TopLeftMazeX + x, _TopLeftMazeY + …
Run Code Online (Sandbox Code Playgroud)

c# wpf children canvas slowdown

5
推荐指数
1
解决办法
9549
查看次数

是否有可能"欺骗"PrintScreen,在捕获之前用其他东西替换我的表单内容?

我有点挑战.

在我们产品的早期版本中,我们有一个错误消息窗口(最后的手段,未处理的异常),它显示了异常消息,类型,堆栈跟踪+各种信息.

这个窗口是打印屏幕友好的,因为如果用户只是做了一个打印屏幕捕获,并通过电子邮件发送给我们屏幕截图,我们几乎拥有了开始诊断问题所需的一切.

然而,对于普通用户来说,这种形式被认为过于技术性和"可怕",所以它被归结为一个更友好的形式,仍然显示错误信息,但不是堆栈跟踪和一些更残酷的细节,我仍然喜欢搞定.此外,该表格还增加了向我们发送电子邮件的功能,其中包含我们之前拥有的所有内容以及许多其他技术细节,基本上我们需要的一切.

但是,用户仍然使用PrintScreen来捕获表单的内容并将电子邮件发送给我们,这意味着我现在的信息量不会超过最佳状态.

所以我很想知道.我是否有可能预先渲染一个与我的表格大小相同的位图,我需要的一切,检测到PrintScreen被击中,并在捕获之前用我的位图快速换出表单内容,然后再返回?

在你说"只是教育用户"之前,是的,那是行不通的.这些不是用户,他们是我们客户的用户,所以我们真的不能告诉他们这么多.

或者,除此之外,有没有办法让我检测PrintScreen,告诉Windows忽略它,然后通过将一个前面提到的预渲染位图转储到剪贴板上准备好放入电子邮件来对它作出反应?

代码是.NET 3.5中的C#3.0,如果它很重要,但是要查看/ for的东西的指针就足够了.

我们的错误报告窗口具有以下功能:

  • 显示错误发生时的截图(包含当时程序的所有打开窗口,显示错误对话框之前)
  • 显示一个文本文件,其中包含我们可以想到的每个血腥细节(但没有敏感的东西)
  • 将上述两个文件保存到磁盘,后者附加到用户的电子邮件或其他内容
  • 通过电子邮件将上述两个文件发送给我们,方法是打开新的支持案例,或者输入现有的支持案例编号以向其添加更多信息
  • 忽略问题并希望它消失(返回应用程序)
  • 退出申请(最后的手段)

我们仍然会收到一些用户的截图.不是全部,请注意,所以我的问题基本上是如何让PrintScreen按钮为那些仍在使用它的用户提供更多帮助.

windows detect printscreen

5
推荐指数
1
解决办法
1114
查看次数

有没有办法在SQL Server 2005/2008中禁用自动类型强制,从varchar到int(作为示例)?

如果我有以下SQL:

INSERT INTO sometable (someintcolumn) VALUES ('1')
Run Code Online (Sandbox Code Playgroud)

这将成功,插入值1.

有什么办法可以让SQL Server请不要永久或暂时转换我的类型,而不是上面的SQL执行失败?

我们有一个大型的导入项目,我们想要修复所有的SQL,但这需要仔细检查所有SQL并分析所有列的数据类型.由于这是针对我们服务器上的测试数据库执行的,因此我们希望让我们的服务器告诉我们何时数据类型错误.

t-sql sql-server type-conversion type-coercion

5
推荐指数
1
解决办法
538
查看次数

VB.NET有"global ::"之类的东西吗?

我正在编写一个代码生成器,需要输出VB.NET代码的一些微不足道的部分,因为这是一个代码生成器,它将添加用户提供程序代码,我想尝试避免类型名称与类型冲突或用户提供的代码中的名称.

在C#中,我可以为类型添加前缀,global::以确保它们与全局类型命名空间层次结构匹配,而不是某些本地名称,但是是否有类似的VB.NET系统?

即.这个:

global::System.String
Run Code Online (Sandbox Code Playgroud)

c# vb.net types identifier

5
推荐指数
2
解决办法
899
查看次数

查找来自Wordnet的单词,由给定单词的固定编辑距离分隔

我正在使用nltk和wordnet编写一个拼写检查器,我有一些拼写错误的单词说"belive".我想要做的是找到wordnet中的所有单词,这些单词由leveshtein的编辑距离1或2分隔.nltk是否提供了完成此任务的方法?这该怎么做?


可能是,我说错了.该edit_distance方法需要2个参数,例如edit_distance(word1,word2)返回levenshtein在word1和word2之间的距离.我想要的是找到我给出的单词与wordnet中的每个其他单词之间的编辑距离.

python nlp nltk wordnet

5
推荐指数
1
解决办法
1271
查看次数

IP Camera,如何在网络上检测它?

我正在创建一个程序来与这个型号的IP Camera通信:

CVUL-I125

这有一个简单的Web界面,我已经成功地与它交谈以控制它,并从中获取视频和快照.

但是,我找不到任何关于如何检测此摄像机在网络上的良好文档,也没有找到它所具有的特定IP地址.

到目前为止,我发现它的唯一工具是捆绑的Windows软件.

我假设(希望!)有一种更好的方法,而不仅仅是迭代范围内的所有IP地址,并查看是否有类似于相机界面的东西.

有谁知道如何做到这一点?

这种事情是否有已知的API?

请注意,由于它是一台IP摄像机,因此它不能直接连接到我的计算机,因此我无法在本地安装任何内容.

以下是一些更多细节:

  • 我正在销售相机和软件,这意味着我不能依赖客户端的任何特定类型的设置,除了工作DHCP
  • 相机没有我可以找到的API文档,如果有人比我更强大的google-fu,请赐教
  • 相机具有DHCP支持,因此它确实成功连接到网络,问题是我之后如何可靠地找到它
  • 我不知道它是否有主机名,文档什么也没说,我自己的DHCP服务器只列出了它的MAC地址

api networking ip-camera

5
推荐指数
1
解决办法
2万
查看次数

MonoTouch,NSLog和TestFlightSdk

我正在尝试将TestFlightSdk集成到我使用MonoTouch制作的应用程序中.

我试图在我的应用程序中实现日志记录,以便它被TestFlightSdk拾取.它应该NSLog自动获取ged文本,但我似乎无法找到正确的代码组合添加到我自己的应用程序,用C#/ MonoTouch编写,也是如此.

我尝试过的:

  1. Console.WriteLine("...");
  2. Debug.WriteLine("...");(但我想这只是打电话Console.WriteLine)
  3. 实现支持NSlog,但这使我的应用程序崩溃,显然我做错了(我会问一个新的问题,如果这是前进的方式.)

MonoTouch中是否有内置的东西可以通过NSLog写入日志消息,以便我可以将它与TestFlightSdk一起使用?或者我必须为NSLog滚动自己的包装器?

为了自己实现NSLog,我添加了这个:

public static class Logger
{
    [DllImport("/System/Library/Frameworks/Foundation.framework/Foundation")]
    private extern static void NSLog(string format, string arg1);

    public static void Log(string message)
    {
        NSLog("%s", message);
    }
}
Run Code Online (Sandbox Code Playgroud)

(我从其他SO问题得到了上面的代码片段:如何绑定到iOS基础功能NSLog.)

但这会导致我的应用程序出现SIGSEGV故障.

nslog xamarin.ios testflight

5
推荐指数
1
解决办法
1790
查看次数

为什么合法?引用类型中的常量,从属性*on*类型开始,不带前缀类型名称?

看看下面的LINQPad程序:

void Main() { }

[TestAttribute(Name)]
public class Test
{
    public const string Name = "Test";
}

[AttributeUsage(AttributeTargets.Class, AllowMultiple = false, Inherited = false)]
[Serializable]
public class TestAttribute : Attribute
{
    public TestAttribute(string dummy)
    {
    }
}
Run Code Online (Sandbox Code Playgroud)

这编译没有任何障碍.为什么?

特别:

[TestAttribute(Name)]
public class Test
{
    public const string Name = "Test";
Run Code Online (Sandbox Code Playgroud)

为什么我不写这个:

               vvvvv
[TestAttribute(Test.Name)]
public class Test
{
    public const string Name = "Test";
Run Code Online (Sandbox Code Playgroud)

属性声明是否被认为是"内部"类型,因此在范围内?

c# attributes constants

5
推荐指数
1
解决办法
74
查看次数