gpt4 book ai didi

c# - 从接口(interface)方法和类方法中获取属性

转载 作者:太空狗 更新时间:2023-10-29 17:55:30 26 4
gpt4 key购买 nike

当方法重载时,从类方法和接口(interface)方法获取属性值的最佳方法是什么?

例如,我想知道在下面的示例中,带有一个参数的 Get 方法具有两个属性,值为 5 和“any”,而另一个方法具有值为 7 和“private”的属性。

public class ScopeAttribute : System.Attribute
{
public string Allowed { get; set; }
}

public class SizeAttribute : System.Attribute
{
public int Max { get; set; }
}

public interface Interface1
{
[SizeAttribute( Max = 5 )]
string Get( string name );

[SizeAttribute( Max = 7 )]
string Get( string name, string area );

}

public class Class1 : Interface1
{
[ScopeAttribute( Allowed = "any" )]
public string Get( string name )
{
return string.Empty;
}

[ScopeAttribute( Allowed = "private" )]
public string Get( string name, string area )
{
return string.Empty;
}
}

最佳答案

我找到的唯一方法是检查该类实现了哪些接口(interface)并检查这些接口(interface)上的属性(如果存在):

static bool HasAttribute (PropertyInfo property, string attribute) {
if (property == null)
return false;

if (GetCustomAttributes ().Any (a => a.GetType ().Name == attribute))
return true;

var interfaces = property.DeclaringType.GetInterfaces ();

for (int i = 0; i < interfaces.Length; i++)
if (HasAttribute (interfaces[i].GetProperty (property.Name), attribute))
return true;

return false;
}

您可能可以同样轻松地将它应用到方法中。


注意:整体方法已经过测试,但代码本身是临时的,可能无法编译。

关于c# - 从接口(interface)方法和类方法中获取属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6380462/

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