小编Jam*_*mes的帖子

完全限定的属性名称

我试图防止 System.NullReferenceException。

我有一个公司,它有一个雇员的集合。每个员工都有一组技能。

SelectedEmployee 指向 Employee 集合中当前选定的元素。

SelectedSkill 指向技能集合中当前选定的元素。

我有一个 ListView,它的 ItemSource 绑定到 Skills 集合;ListView 的 SelectedItem 绑定到 SelectedSkill。

删除技能时,我希望 ListView 滚动到最后一个元素。

private void DeleteSelectedSkillFromSelectedEmployee()
{
    Company.SelectedEmployee.Skills.Remove(Company.SelectedEmployee.SelectedSkill);
    EmployeeSkillsListView.ScrollIntoView(Company.SelectedEmployee.Skills.Last());
}
Run Code Online (Sandbox Code Playgroud)

如果尚未选择 Employee,则 SelectedEmployee 将为 null。在方法内部执行任何操作时,这将导致 System.NullReferenceException。

注意:我使用了一个扩展方法来替换 .Last() 所以它不会在空集合上出错。

为了解决这个问题,我使用了一个 Util 方法:

public static class Utils
{
    public static bool PropertyExists(Object obj, String name)
    {
        foreach (String part in name.Split('.'))
        {
            if (obj == null) { return false; }

            Type type = obj.GetType();
            System.Reflection.PropertyInfo info = type.GetProperty(part);

            if (info == null) …
Run Code Online (Sandbox Code Playgroud)

c# nullreferenceexception

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

标签 统计

c# ×1

nullreferenceexception ×1