从对象获取属性; '属性'不包含' GetCustomAttribute'的定义

时间:2017-08-14 10:31:14

标签: c# xamarin

我一直在使用microsofts网站上的指南,但无法将它们付诸实践。我在这里使用过这段代码:

Attribute

但是这会导致下面的错误; Equals似乎只有方法ReferenceEqualsError CS0117: 'Attribute' does not contain a definition for 'GetCustomAttribute' (CS0117) (TestProject) 。我以为我可能会错过参考文献,但我已经包含了样本中的所有内容。

const redis = require('redis');
const { REDIS_URL: redisUrl, REDIS_PASSWORD: redisPassword } = process.env;

const client = redis.createClient(redisUrl, {
  no_ready_check: true,
  auth_pass: redisPassword
});

client.on('connect', () => {
  redisPassword && client.auth(redisPassword);
});

client.on('error', err => {
  global.console.log(err.message)
});

2 个答案:

答案 0 :(得分:3)

因为您正在使用Xamarin,所以您正在运行Mono Framework,这意味着您无法像预期的那样访问完整的.Net Framework库。其中一个变化是反射,您需要将代码更改为:

TestAttribute MyAttribute = typeof(T).GetTypeInfo().GetCustomAttribute<TestAttribute>();

答案 1 :(得分:0)

您无法找到它,因为它尚未在那里实施。请参阅下面反编译的System.Runtime.dll。

namespace System
{
  [AttributeUsage(AttributeTargets.All, AllowMultiple = false, Inherited = true)]
  public abstract class Attribute
  {
    [SecuritySafeCritical]
    public override bool Equals(object obj)
    {
       return false;
    }

    [SecuritySafeCritical]
    public override int GetHashCode()
    {
       return 0;
    }
  }
}

使用类似

的内容
typeof(T).GetTypeInfo().GetCustomAttribute<>()

代替