【发布时间】:2017-06-02 18:35:08
【问题描述】:
我目前正面临一个问题,我正在尝试为我们的 Model First DevForce 实体之一制作 WPF 客户端部分。问题是 WPF 客户端中的部分似乎无法访问客户端项目引用的模型项目中其兄弟部分中的属性。
我在客户端和模型中都使用了相同的命名空间,但客户端不断返回,因为它是只有一个文件的部分。
我这样做的主要原因是我需要访问驻留在我的客户端项目中的静态类的属性,该属性位于我添加到客户端实体 Partial 的属性中。以下是其中的一个样本:
模特好友班:
using System;
using System.ComponentModel.DataAnnotations;
using System.Linq;
using System.Security.Principal;
using IbEm = IdeaBlade.EntityModel;
using IdeaBlade.EntityModel.Security;
using IdeaBlade.Validation;
// ReSharper disable CheckNamespace
namespace BearPaw.Models.Main
{
[MetadataType(typeof(NavigationButtonGroupMetadata))]
public partial class NavigationButtonGroup
{
[IbEm.AllowRpc]
public static object NameAlreadyInUse(IPrincipal principal,
IbEm.EntityManager entityManager, params Object[] args)
{
string buttonGroupNameToCheck = (string)args[0];
var serverButtonGroup = entityManager.GetQuery<NavigationButtonGroup>().FirstOrDefault((u) => u.Name == buttonGroupNameToCheck);
return serverButtonGroup != null;
}
}
public class NavigationButtonGroupMetadata
{
[RegexVerifier("Name", @"^[A-Za-z_]*$")]
[StringLengthVerifier(MaxValue = 100, IsRequired = true, ErrorMessage = "Button Group Name must be unique")]
public static string Name;
}
}
客户端部分:
using System;
using System.ComponentModel.DataAnnotations;
using System.Linq;
using System.Security.Principal;
using IbEm = IdeaBlade.EntityModel;
using IdeaBlade.EntityModel.Security;
using IdeaBlade.Validation;
// ReSharper disable CheckNamespace
namespace BearPaw.Models.Main
{
[MetadataType(typeof(NavigationButtonGroupMetadata))]
public partial class NavigationButtonGroup
{
public bool IsEnabled
{
get
{
{
if (NavigationButtonGroupType.AlwaysVisible || (DynamicMenuItemsHelper.MenuDetails != null && DynamicMenuItemsHelper.MenuDetails.Count() > 0 )) return true;
var currentUser = Authenticator.Instance?.DefaultAuthenticationContext?.Principal?.Identity;
return currentUser != null && NavigationButtons.
Any(b => b.IsEnabled);
}
}
}
}
}
Visual Studio 在 NavigationButtonGroupType.AlwaysVisible 上显示编译错误,说明非静态字段需要对象引用,即使 NavigationButtonGroupType 是模型中实体上的导航道具。类似的问题适用于 NavigationButtons 也是一个 nav 属性,但 Visual Studio 声明它在当前上下文中不存在。
任何关于为什么这不起作用的帮助或指示将不胜感激。
非常感谢
李
【问题讨论】: