我试图使用c#的自定义属性。
作为其中的一部分,请考虑以下情况:我有我的客户端类,它为我提供了一个哈希字符串,并使用自定义属性指定哈希算法。
我能够做到这一点,但在如何检索自定义属性值时却陷入困境。
class HashAlgorithmAttribute : Attribute
{
private string hashAlgorithm;
public HashAlgorithmAttribute(string hashChoice)
{
this.hashAlgorithm= hashChoice;
}
}
[HashAlgorithm("XTEA")]
class ClientClass
{
public static string GetstringToBeHashed()
{
return "testString";
}
}
class ServerClass
{
public void GetHashingAlgorithm()
{
var stringToBeHashed = ClientClass.GetstringToBeHashed();
///object[] hashingMethod = typeof(HashAlgorithm).GetCustomAttributes(typeof(HashAlgorithm), false);
}
}
答案 0 :(得分:2)
使用属性类的模拟示例:
[AttributeUsage(AttributeTargets.All, Inherited = false, AllowMultiple = true)]
sealed class HashAlgorithmAttribute : Attribute
{
readonly string algorithm;
public HashAlgorithmAttribute(string algorithm)
{
this.algorithm = algorithm;
}
public string Algorithm
{
get { return algorithm; }
}
}
测试班:
[HashAlgorithm("XTEA")]
class Test
{
}
获得价值:
var attribute = typeof(Test).GetCustomAttributes(true)
.FirstOrDefault(a => a.GetType() == typeof(HashAlgorithmAttribute));
var algorithm = "";
if (attribute != null)
{
algorithm = ((HashAlgorithmAttribute)attribute).Algorithm;
}
Console.WriteLine(algorithm); //XTEA