检索由我的客户端定义的自定义属性值

时间:2013-09-13 13:14:36

标签: c# .net custom-attributes

我试图使用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);

    }
}

1 个答案:

答案 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