gpt4 book ai didi

c# - 使用内部逻辑创建自定义属性

转载 作者:太空宇宙 更新时间:2023-11-03 23:39:46 25 4
gpt4 key购买 nike

我这里有这个自定义属性,它执行一些逻辑

[AttributeUsage(AttributeTargets.All)]
public class CustomAttribute : Attribute
{
public CustomAttribute ()
{
bool foo = false;
if (foo)
Console.WriteLine ("TRUE");
}
}

然后我想像这样在我的组件类中使用它

[Custom]
public class Component
{
public void Test()
{
console.log("test");
}
}

所以我想要的是每次我创建该组件类的实例时,它基本上会调用或执行我的属性中的代码来执行一些逻辑,但问题是,它不会执行我自定义中的代码属性类。我知道我做错了,有人知道怎么做吗?

最佳答案

当类被实例化时,它不会固有地调用任何绑定(bind)到您的属性的代码,甚至不会实例化它。属性仅在您使用反射调用它们时实例化。如果您希望在构造类时处理属性,则必须在 Component 类的构造函数中调用一个方法,该方法使用反射来分析类的属性。

理想的方法是从具有构造函数逻辑的基类继承:

public class Component : CustomBase
{
public void Test()
{
console.log("test");
}
}

public abstract class CustomBase
{
public CustomBase()
{
bool foo = false;
if (foo)
Console.WriteLine ("TRUE");
}
}

关于c# - 使用内部逻辑创建自定义属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29473365/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com