我正在使用数据库优先方法,并且有一个类SalesWallboard映射到数据库表。
SalesWallboard.cs:
between_two_lists
我为此创建了一个MetadataType类以应用自定义属性
SalesWallboardModel.cs
namespace Wallboards.DAL.SchnellDb
{
public partial class SalesWallboard
{
public int Id { get; set; }
public string StaffName { get; set; }
...
}
}
但是在我的代码中,当我使用Attribute.IsDefined检查它时,它总是抛出false。
代码
namespace Wallboards.DAL.SchnellDb
{
[MetadataType (typeof(SalesWallboardModel))]
public partial class SalesWallboard
{
}
public class SalesWallboardModel
{
[UpdateFromEclipse]
public string StaffName { get; set; }
...
}
}
我已经检查了here给出的答案。但是我不明白这个例子。 有人可以为我简化一下吗?
答案 0 :(得分:0)
我要感谢@elgonzo和@thehennyy的评论,并通过反思来纠正我的理解。
我找到了想要的here。但是我必须进行如下所示的一些修改。
我创建了方法// Select DOM Items
const menuBtn = document.querySelector(".menu-btn");
const menu = document.querySelector(".menu");
const menuNav = document.querySelector(".menu-nav");
const menuBranding = document.querySelector(".menu-branding");
const navItem = document.querySelectorAll(".nav-item");
// Set Initial state of the menu
let showMenu = false;
menuBtn.addEventListener("click", toggleMenu);
function toggleMenu() {
// Opens the navigation bar
if (!showMenu) {
menuBtn.classList.add("close");
menu.classList.add("show");
menuNav.classList.add("show");
menuBranding.classList.add("show");
navItem.forEach(item => item.classList.add("show"));
// Set Menu state to true
showMenu = true;
}
// Closes the navigation bar
else {
menuBtn.classList.remove("close");
menu.classList.remove("show");
menuNav.classList.remove("show");
menuBranding.classList.remove("show");
navItem.forEach(item => item.classList.remove("show"));
// Set Menu state to false
showMenu = false;
}
}
PropertyHasAttribute
我也从here获得了帮助,因为我的类型在另一个程序集中。
方法private static bool PropertyHasAttribute<T>(string propertyName, Type attributeType)
{
MetadataTypeAttribute att = (MetadataTypeAttribute)Attribute.GetCustomAttribute(typeof(T), typeof(MetadataTypeAttribute));
if (att != null)
{
foreach (var prop in GetType(att.MetadataClassType.UnderlyingSystemType.FullName).GetProperties())
{
if (propertyName.ToLower() == prop.Name.ToLower() && Attribute.IsDefined(prop, attributeType))
return true;
}
}
return false;
}
GetType
然后像这样在我的代码中使用它
代码
public static Type GetType(string typeName)
{
var type = Type.GetType(typeName);
if (type != null) return type;
foreach (var a in AppDomain.CurrentDomain.GetAssemblies())
{
type = a.GetType(typeName);
if (type != null)
return type;
}
return null;
}