小编Use*_*123的帖子

带有空条件运算符和等待的C#错误

我在C#中使用新的空条件运算符时遇到了一个有趣的System.NullReferenceException.如果"MyObject"为null,则以下代码为我提供NullReferenceException:

await this.MyObject?.MyMethod()
Run Code Online (Sandbox Code Playgroud)

我希望如果"MyObject"为空,或者我误解了空条件运算符的用途,就不会调用"MyMethod"?

c# nullreferenceexception null-conditional-operator

16
推荐指数
2
解决办法
1554
查看次数

如何在删除可选相关实体时将FK更新为null

我是EF的新手,并且为了方便删除我的对象而苦苦挣扎.我的两个对象和相关的DbContext如下所示:

public class Context: DbContext
{
    public Context() : base(){}
    public DbSet<Person> Persons {get;set;}
    public DbSet<Vehicle> Vehicles {get;set;}
}

public class Person
{
   public int PersonID {get;set;}
   public string Name {get;set;}
}

public class Vehicle
{
   public int VehicleID {get;set;}

   public int? PersonID {get;set;}

   [ForeignKey("PersonID")]
   public virtual Person Person {get;set;}
} 
Run Code Online (Sandbox Code Playgroud)

如上所述,一个人可以链接到多个车辆.从人到车辆没有明确的链接,但是通过外键关系存在从车辆到"父母"人的链接.

然后我在我的代码中创建各种车辆,并将这些车辆链接到可选的人物对象(外键可以为空).

我的问题是删除Person对象.我通常会删除对象,如下所示:

private void DeletePerson()
{
    using (var context = new Context())
    {
        int personID = 4; //Determined through other code
        var person = context.Persons.Find(personID);
        context.Persons.Remove(person); …
Run Code Online (Sandbox Code Playgroud)

c# entity-framework cascading-deletes ef-code-first

11
推荐指数
1
解决办法
8241
查看次数

将ActiveX控件插入Powerpoint幻灯片

我想将自定义ActiveX控件插入到Powerpoint幻灯片中.我已经创建了自定义控件并对其进行了注册,并测试了它的工作原理.我可以轻松地将自定义控件添加到UserForm,但无法将其直接添加到幻灯片中(根据Developer Tab - > Controls下的其他控件).

是否可以直接将自定义ActiveX控件添加到幻灯片?

如果没有,是否可以将UserForm直接嵌入到幻灯片中?

谢谢!

powerpoint vba activex powerpoint-vba

8
推荐指数
1
解决办法
770
查看次数

C#OneDrive for Business / SharePoint:从本地同步文件获取服务器路径

我正在编写WPF C#应用程序,并希望获取本地同步文件的SharePoint URL。

在Windows资源管理器中,用户可以右键单击已同步的OneDrive文件夹中的文件,选择“ OneDrive for Business”菜单和“复制链接”。这提供了同步文件的SharePoint URL。有没有办法在C#中复制它?

此刻,如果我从应用程序中使用FileOpenDialog引用文件,那么我只会得到本地物理路径(例如c:\ onedrive ... \ file.txt)。如何使用本地同步的文件获取SharePoint URL?

c# wpf sharepoint onedrive

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

AngleSharp:在查找元素之前运行所有 JavaScript

我目前正在使用 AngleSharp 构建一个用于网络自动化的应用程序。我已成功登录网站,但无法使用 context.Active.QuerySelectorAll 找到我要查找的元素。

我知道这可能是因为某些 JavaScript 尚未在我正在搜索的 HTML 中运行,按照此链接:Is the HTML shown via 'View Source' different from the HTML shown in (Firebug) Developer Tools?

在查找特定元素之前,如何强制 AngleSharp 执行所有 JavaScript?

代码:

var config = AngleSharp.Configuration.Default.WithDefaultLoader().WithCookies().WithJavaScript().WithCss();
            var browsingContext = BrowsingContext.New(config);

            await browsingContext.OpenAsync("https://users.premierleague.com/");
            await browsingContext.Active.QuerySelector<IHtmlFormElement>("form[action='/accounts/login/']").SubmitAsync(new
            {
                login = "abc@gmail.com",
                password = "password"
            });
            await browsingContext.OpenAsync("https://fantasy.premierleague.com/a/team/my/");
Run Code Online (Sandbox Code Playgroud)

到目前为止,一切工作正常,我可以确认我已登录。但是,我似乎无法获得以下返回的值:

var x = browsingContext.Active.QuerySelectorAll("*").Where(m => m.ClassName == "ismjs-link ism-link ism-link--more");
Run Code Online (Sandbox Code Playgroud)

我知道这个元素存在,因为我已经通过 Google Chrome 上提供的“检查”功能检查了多次。

我缺少什么/如何让 JavaScript 运行?

谢谢!

javascript c# anglesharp

5
推荐指数
0
解决办法
2396
查看次数

Box C#对象作为通用接口

我有大量的视图模型,每个视图模型都是针对一种特定的对象类型设计的(例如Person,Car,等等).我想为这些添加通用功能,例如检查是否已存在包含特定对象(包含特定Car,Person等)的viewmodel的功能.我希望能够动态创建ViewModels(例如,为Car创建viewmodel,为Person创建viewmodel).所有视图模型都将具有不同的功能,命令等,因此我不能简单地使用一个全局视图模型.是否可以使用接口来解决这个问题,或者这是一个根本上有缺陷的设计模式?

当前代码:

namespace DummyNameSpace
{

    public interface IViewModel<T>
    {
        T DataModelObject { get; set; }
        string Name { get; set; }
    }

    public class SomeDataModelObject
    {
        public string SomeProperty { get; set; }
    }

    public class ViewModelInstance : IViewModel<SomeDataModelObject> //There will be various ViewModels that implement IViewModel, all with different 'T' types.
    {
        //Some properties, commands, etc.
    }

    public class TheMainViewModel //won't implement IViewModel, as this will be used to control all the various other viewmodels.
    {

        public void MethodBeingCalled(object …
Run Code Online (Sandbox Code Playgroud)

c# generics interface

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