我正在尝试使用 CommonOpenFileDialog 的文件夹选择器,如本答案中所述。问题是,即使有一个非常精简的示例项目,我在尝试使用 CommonOpenFileDialog 的函数时也会遇到异常ShowDialog()。
using Microsoft.WindowsAPICodePack.Dialogs;
namespace DialogTest
{
class Program
{
public static void Main(string[] args)
{
CommonOpenFileDialog dialog = new CommonOpenFileDialog();
dialog.InitialDirectory = "C:\\Users";
dialog.IsFolderPicker = true;
CommonFileDialogResult result = dialog.ShowDialog();
if (result == CommonFileDialogResult.Ok)
{
//Do Stuff
}
}
}
}
Run Code Online (Sandbox Code Playgroud)
我还与作者 Microsoft 一起使用以下 nuget 包:
此代码在 处产生以下异常dialog.ShowDialog();:
System.Runtime.InteropServices.COMException was unhandled
ErrorCode=-2147023116
HResult=-2147023116
Message=A null reference pointer was passed to the stub. (Exception from HRESULT: …Run Code Online (Sandbox Code Playgroud) 我是继承人的新手.我注意到如果你从一个部分类中构造一个对象,并将它作为一个参数传递给一个接受它的基类型的函数,那么即使它们已经隐藏在部分类中,也会使用基本方法.
能够交替使用继承的对象会很有用.是否有一种解决方法或替代方法允许我以这种方式将对象作为参数传递?
我写了一些示例代码来演示我在说什么:
public class Enemy
{
string[] baseLikes = new string[] { "loitering", "puppies" };
public string[] GetLikes()
{
return baseLikes;
}
}
public partial class Skater : Enemy
{
string[] uniqueLikes = new string[] { "skateboarding" };
public new string[] GetLikes()
{
string[] likes = base.GetLikes();
return likes.Concat(uniqueLikes).ToArray();
}
}
class Program
{
public static void WriteEnemyLikes(Enemy enemy)
{
string[] likes = enemy.GetLikes();
Console.WriteLine("This enemy's likes: ");
foreach (string like in likes)
Console.WriteLine("- " + like);
}
static …Run Code Online (Sandbox Code Playgroud)