下面是我用来关闭应用程序及其关联进程以及删除在使用应用程序期间提取的所有文件的代码:
private void Quit_Click(object sender, RoutedEventArgs e) //close the application
{
//kill cinector after all import is done
Process[] processes = Process.GetProcesses();
for (int i = 0; i < processes.Count(); i++)
{
if (processes[i].ProcessName.ToLower().Contains("CinectorProcess"))
{
processes[i].Kill();
}
}
//also kill powerpoint just in case
for (int i = 0; i < processes.Count(); i++)
{
if (processes[i].ProcessName.ToLower().Contains("powerpnt"))
{
processes[i].Kill();
}
}
//kill the engine
ShutdownEngine();
//kill the main app
App.Current.Shutdown();
//also delete all three folders
//slides_png_prev
if (Directory.Exists(slides_png_prev))
{
Thumbnails = …Run Code Online (Sandbox Code Playgroud) 假设在我假设的软件的第一个版本中,我有一个像这样的简单类:
public Class Version1
{
public void Method1()
{
Console.WriteLine("Hello");
}
}
Run Code Online (Sandbox Code Playgroud)
在第二个版本中,我进行了升级,需要对方法 1 进行如下修改:
public Class Version1
{
public void Method1()
{
Console.WriteLine("Hello");
Console.WriteLine("World");
}
}
Run Code Online (Sandbox Code Playgroud)
在第三个版本中,我进行了升级,需要向此类添加另一个方法,如下所示:
public Class Version1
{
public void Method1()
{
Console.WriteLine("Hello");
Console.WriteLine("World");
}
public int Method2()
{
return 7;
}
}
Run Code Online (Sandbox Code Playgroud)
现在,根据我对开闭原则的理解,在两次升级中,我都违反了这一原则,因为我修改了在我的软件的第一个版本中执行所需工作的类。
我认为应该这样做,但不确定是否正确,是这样的:
public virtual Class Version1
{
public virtual void Method1()
{
Console.WriteLine("Hello");
}
}
public virtual Class Version2 : Version1
{
public override void Method1()
{
Console.WriteLine("Hello");
Console.WriteLine("World");
}
}
public Class …Run Code Online (Sandbox Code Playgroud) 我从 Asp.Net Framework 迁移到了 Asp.Net Core。Request.Url.PathAndQueryAsp.Net Core 中的替换或等效属性是什么?
我有一个按钮,打开窗口颜色托盘,然后为某些虚拟工作室中的选定元素分配选择颜色.用户首先在鼠标单击时选择元素,并根据元素ID分配颜色.因此,每次单击按钮时,都会更改相同或不同元素的颜色.元素ID是从代理获取的,如果鼠标单击某个元素,则会触发该代理.颜色设置按钮的代码如下:
private void Btn_Choose_Color_Click(object sender, RoutedEventArgs e)
{
uint id_selected = (uint)selected_element; //get id of selected element from clickintocallback
//open windows color dialog
System.Windows.Forms.ColorDialog my_dialog = new System.Windows.Forms.ColorDialog();
my_dialog.ShowDialog();
//get the color from windows dialog
int red = my_dialog.Color.R;
int green = my_dialog.Color.G;
int blue = my_dialog.Color.B;
//create cinector color object and pass rgb values from windows dialog
ByteRGBColor desired_color = new ByteRGBColor((byte)red, (byte)green, (byte)blue); //assign color statically
for (int i = 0; i < all_color_elements_in_loaded_studio.Count; i++)
{
uint id_current …Run Code Online (Sandbox Code Playgroud) 我想将有符号的字节数组写入sbyte[]流.我知道,Stream.Write只接受无符号字节[],这样我就可以转换sbyte[]到byte[]之前将它传递给流.但我真的需要将数据发送为sbyte[].有办法吗?我发现BinaryWriter.Write但这相当于Stream.Write?
我使用这行简单的代码来复制粘贴文件:
File.Copy(filename, temp_file);
Run Code Online (Sandbox Code Playgroud)
现在,如果一个文件已经存在,我想在复制到一些保证不存在于目标文件夹中的名称之前重命名它,方法是添加一些扩展名,如“copy1”“copy2”......通过资源管理器复制粘贴。如何以编程方式执行此操作?
我使用以下代码导航按钮单击:
XAML:
<Button x:Name ="Btn_Import" Grid.Row="33" Grid.Column="15" Grid.ColumnSpan="36" Grid.RowSpan="36" Command="{Binding NavigateCommand}" CommandParameter="ViewImportProgress"/>
Run Code Online (Sandbox Code Playgroud)
视图模型:
public DelegateCommand<string> NavigateCommand { get; set; }
public MainButtonsViewModel(IRegionManager regionManager, IMainMenuTooltipViewer mainMenuTooltipViewer)
{
NavigateCommand = new DelegateCommand<string>(Navigate);
}
private void Navigate(string uri)
{
regionManager.RequestNavigate("ScreenNavigationRegion", uri);
}
Run Code Online (Sandbox Code Playgroud)
它工作正常.现在我的问题是什么是相同的代码,使导航工作在MouseOver事件而不是MouseClick事件,当然在MVVM模式和使用棱镜?
我理解这个原则声明一个模块是开放的扩展但是关闭以进行修改,当我们想要在某个类中升级/修改一个方法时,这是很明显的 - 我们创建另一个继承基类然后覆盖基本方法的类这里是为了保持两种功能.
但是当我们想要为基类添加另一种不同的方法时呢?这被认为是基类的修改或扩展 - 可以将方法添加到基类,还是我们还应该创建继承基类然后将新方法放在那里的新类?
此外,向基类添加属性和字段的问题也一样.
在c#我可以这样做:
private double[,] elevations;
Run Code Online (Sandbox Code Playgroud)
如何在c ++中执行相同操作而不指定此行上数组的大小或元素?
我更改了ListView项目选择时调用的以下方法:
private void SlideTransitionsList_SelectionChanged(object sender, SelectionChangedEventArgs e)
{
.........
}
Run Code Online (Sandbox Code Playgroud)
我想从其他方法中调用此方法.我该怎么办?
c# ×7
wpf ×3
.net ×1
asp.net-core ×1
c++ ×1
inheritance ×1
mvvm ×1
polymorphism ×1
prism ×1
settings ×1