我在C#中使用新的空条件运算符时遇到了一个有趣的System.NullReferenceException.如果"MyObject"为null,则以下代码为我提供NullReferenceException:
await this.MyObject?.MyMethod()
Run Code Online (Sandbox Code Playgroud)
我希望如果"MyObject"为空,或者我误解了空条件运算符的用途,就不会调用"MyMethod"?
我是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) 我想将自定义ActiveX控件插入到Powerpoint幻灯片中.我已经创建了自定义控件并对其进行了注册,并测试了它的工作原理.我可以轻松地将自定义控件添加到UserForm,但无法将其直接添加到幻灯片中(根据Developer Tab - > Controls下的其他控件).
是否可以直接将自定义ActiveX控件添加到幻灯片?
如果没有,是否可以将UserForm直接嵌入到幻灯片中?
谢谢!
我正在编写WPF C#应用程序,并希望获取本地同步文件的SharePoint URL。
在Windows资源管理器中,用户可以右键单击已同步的OneDrive文件夹中的文件,选择“ OneDrive for Business”菜单和“复制链接”。这提供了同步文件的SharePoint URL。有没有办法在C#中复制它?
此刻,如果我从应用程序中使用FileOpenDialog引用文件,那么我只会得到本地物理路径(例如c:\ onedrive ... \ file.txt)。如何使用本地同步的文件获取SharePoint URL?
我目前正在使用 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 运行?
谢谢!
我有大量的视图模型,每个视图模型都是针对一种特定的对象类型设计的(例如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# ×5
activex ×1
anglesharp ×1
generics ×1
interface ×1
javascript ×1
onedrive ×1
powerpoint ×1
sharepoint ×1
vba ×1
wpf ×1