【问题标题】:How i get an object instance's annotation or Custom Attribute?我如何获得对象实例的注释或自定义属性?
【发布时间】:2015-12-01 22:54:31
【问题描述】:

是否可以访问 Object 实例的 Annotation 定义?

假设我有以下代码:

public class A
{
    [CustomStuff( Value="" )]
    public B propertyB;
}

在另一个类中,我收到一个 B 的实例作为参数,是否可以从该对象获取注释?

【问题讨论】:

  • 如果不可能,我一定是想象了一整天
  • @Plutonix 我实际上认为这是不可能,至少不可靠。也就是说,只需拥有一个B 类型的实例,就可以在B 类型的属性上获取A 中定义的属性(如果其他类用不同的属性注释它们的B 属性怎么办?如果是同一个实例吗?)
  • 我认为它是重复的并已标记。但是在阅读了答案后,我认为我误解了这个问题。我已经投票支持重新开放。对不起,伙计们。
  • 和我几年前问过的this question也有关系,仅供参考。
  • 所以,问题来了,因为我正在使用 Selenium,并且我尝试使用 Selenium 执行一些 javascript,所有 WebElements 都是作为属性创建的,但是由于某种原因,当我通过其中一个创建的 WebElements 时作为属性(它们已经实例化并且正在工作)当我将它传递给 JavaScriptExecutor 时,它表示 Web 元素无效。

标签: c# .net reflection


【解决方案1】:

不可能,而且能够做到这一点也没有任何意义。注释在属性上,而不是实例上。举个例子:

public class A
{
    [CustomStuff( Value="Something" )]
    public B One;

    [CustomStuff( Value="SomethingElse" )]
    public B Two;

    [MoreCustom( Value="" )]
    public B One;
}

然后使用它:

var a = new A();
DoSomething(a.One);

public void DoSomething(B instance) 
{
    //What should the result be here?
    //Should be 'CustomStuff:Something', right?    
}

var a = new A();
a.Two = a.One
DoSomething(a.One);

//Now what should it be?

var a = new A();
a.Two = a.One
var tmp = a.One;
a.One = a.Two = null;
DoSomething(tmp);

//And now?

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-01-20
    • 2016-06-05
    • 2014-11-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-08-09
    相关资源
    最近更新 更多