克隆引用类型

考虑以下 我有一个Html模板对象 class HtmlTemplateModel { public HTML Html {get;set;} //..etc } 和一个Html编辑器 class HtmlEditorViewModel { private HtmlTemplateModel htmlTemplateModel; public HtmlEditor(HtmlTemplateModel htmlTemplateModel) { this.htmlTemplateModel = htmlTemplateModel; } } 这样,TemplateEditor实例将更改应用于原始模板,因为它是一个引用类型,但我不想修改它的值,所以我创建了一个新的构造函数,它接受一个HtmlTemplateModel并创建一个新的HtmlTemplateModel 。 这是在.NET中克隆引用类型的最佳方法吗? 并且有一个快捷方式,以便我不必创建另一个构造函数来克隆对象?

在运行时将byte 加载到System.Windows.Controls.Image中

我有一个表示.png文件的byte []。 我正在通过WebClient下载此.png。 当WebClient通过URL下载.png I引用时,我得到一个byte []。 我的问题是,如何将一个byte []加载到WPF中的System.Windows.Controls.Image元素中? 谢谢。 注意:这是我在这里提出的问题的补充: 在运行时将一个字节[]加载到一个图像中 。 在我原来的问题中我不够具体,但答案仍然相关。

NUnit在程序集中找不到测试

我使用MSTestinheritance了一个程序集,但是这些测试是在构建机器上使用nunit-console运行的(不确定它是如何工作的)。 因此我决定将其排序并将其更改为正确的NUnit测试,但现在nunit-console(或gui)找不到任何测试。 它们使用ReSharper测试运行器运行得很好。 知道可能遗漏的是什么吗?

如何在图片框C#中添加标签透明度?

我在这里创建一个程序可以添加标签和图片框。 所有控件必须是面板的子项。 我使用这样的代码: panel2.Controls.Add(picturebox1); panel2.Controls.Add(label1); 是的,问题是我想要标签超过图片框。 我设置了代码: label1.Parent = pictureBox1; label1.BackColor = Color.Transparent; 更新: 因为控件只在我想通过button_event创建时创建。 比如,创建图片框,创建标签文本。 这不是在我想要使用之前创建的。 我创建此控件的代码: public PictureBox ctrl = new PictureBox(); public void btnAddLogo_Click(object sender, EventArgs e) { Random rnd = new Random(); int randNumber = rnd.Next(1, 1000); String picName = “Pic_” + randNumber; ctrl.Location = new Point(200, 170); ctrl.Size = new […]

如何从chrome获取打开的标签列表? | C#

所以我想从谷歌浏览器(标题,URL)和列表主题中提取打开的选项卡,就像在chrome任务管理器中一样。 到目前为止,我已尝试过滤所有chrome进程并获取窗口标题,但这不起作用: var procs = Process.GetProcesses(); … foreach (var proc in procs) { if (Convert.ToString(proc.ProcessName) == “chrome”) { Console.WriteLine(“{0}: {1} | {2} | {3} ||| {4}\n”, i, proc.ProcessName, runtime, proc.MainWindowTitle, proc.Handle); } } 这不会给我标签的地址或标题,还有另一种方法吗?

DependencyProperty作为实例变量?

虽然网络上的大多数代码示例都使用DependencyProperties的静态声明,但在某些情况下,我发现它们被定义为公共只读实例成员。 将DependencyProperty定义为实例成员(而非静态)是否有任何优点? ( 注意:我不想讨论静态成员是好还是坏,更具体地说是DependencyProperty对象的行为)

管道输出输出到新过程

我有问题将rtmpdump进程的输出传递给ffmpeg,我相信问题是我的进程正在窃取rtmpdump的输出。 在我的研究中,我听说尝试使用cmd.exe进程并在其中运行rtmpdump.exe作为/ C命令,但是这个问题是我丢失了对从中生成的rtmpdump.exe进程的引用,我需要能够在我的程序中管理多个rtmpdump进程,并有时选择性地杀死某些进程。 我最初尝试过这样简单的事情: var p = new Process(); p.StartInfo.FileName = “rtmpdump.exe”; p.StartInfo.Arguments = “-v -r rtmp://somehost.com/app-name -o – | ffmpeg.exe -loglevel quiet -i – -c:v copy -c:a libvo_aacenc -b:a 128k \”test.mp4\””; 这根本不起作用。 使用“cmd.exe”作为初始进程: var p = new Process(); p.StartInfo.FileName = “cmd.exe”; p.StartInfo.Arguments = “/C rtmpdump.exe -v -r rtmp://somehost.com/app-name -o – | ffmpeg.exe -loglevel quiet […]

用户选择子项后,TreeView自动选择父级

在我的窗口中,我有一个TreeView和TextBox。 假设TextBox用于编写自定义脚本,TreeView是一种选择要插入的函数的方法; 想想Crystal Report脚本编辑器。 我的目标是让用户单击TreeView的一个子项,并将该子项插入到TextBox中。 子项是函数签名,位于父节点下。 然后,用户可以导航到TextBox,选择一个function参数并将其替换为另一个function签名。 为此,我处理TreeView的SelectedItemChanged事件,设置TextBox的SelectedText,然后尝试在更改后突出显示文本。 正确交换TextBox的SelectedText。 但是,文本未突出显示,滚动条未滚动到所选文本。 这是我编写的测试项目中的XAML,用于重现行为: 这是代码隐藏: using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Windows; using System.Windows.Controls; using System.Windows.Data; using System.Windows.Documents; using System.Windows.Input; using System.Windows.Media; using System.Windows.Media.Imaging; using System.Windows.Navigation; using System.Windows.Shapes; namespace SelectedTextWeirdness { public class Child { public string Name { get; set; } } public class […]

如何在xaml中声明一个故事板并从代码中运行它

我想在点击按钮时增加当前窗口高度。 我用这个代码: private void sendbtn_Click(object sender, RoutedEventArgs e) { DoubleAnimation myDoubleAnimation = new DoubleAnimation(); myDoubleAnimation.From = this.Height; myDoubleAnimation.To = 500; myDoubleAnimation.Duration = new Duration(TimeSpan.FromSeconds(0.5)); Storyboard myStoryboard = new Storyboard(); myStoryboard.Children.Add(myDoubleAnimation); Storyboard.SetTargetName(myDoubleAnimation, this.Name); Storyboard.SetTargetProperty(myDoubleAnimation, new PropertyPath(Window.HeightProperty)); myStoryboard.Begin(this); } 但我想在xaml中声明我的故事板并从代码中运行它。 但我不知道这是怎么回事?

在Linq中调用InsertOnSubmit到Sql时出现NullReferenceException

我正在尝试使用LINQ to SQL将新对象插入到我的数据库中,但是当我在下面的代码片段中调用InsertOnSubmit()时,会获得NullReferenceException。 我传入一个名为FileUploadAudit的派生类,并设置了该对象的所有属性。 public void Save(Audit audit) { try { using (ULNDataClassesDataContext dataContext = this.Connection.GetContext()) { if (audit.AuditID > 0) { throw new RepositoryException(RepositoryExceptionCode.EntityAlreadyExists, string.Format(“An audit entry with ID {0} already exists and cannot be updated.”, audit.AuditID)); } dataContext.Audits.InsertOnSubmit(audit); dataContext.SubmitChanges(); } } catch (Exception ex) { if (ObjectFactory.GetInstance().HandleException(ex)) { throw; } } } 这是堆栈跟踪: […]