C# 获取方法';属性,而不创建实例

C# 获取方法';属性,而不创建实例,c#,C#,我有以下课程: public class Person { [SomeCustomAttribute] public void blahblahblah() {} } 是否可以通过反射提取方法的属性,而不创建实例?我知道实例属性是不可能的,那么实例方法呢?如果方法是静态的,它会工作吗?将类设为静态的(实际上,静态类在幕后有一个实例) 在该静态类内部(或从任何外部类),您可以做任何您想做的事情,而无需实例化对象(包括获取属性)。将该类设置为静态(实际上,静态类在幕后有一个实例)

我有以下课程:

public class Person
{
   [SomeCustomAttribute]
   public void blahblahblah()
   {}
}
是否可以通过反射提取方法的属性,而不创建实例?我知道实例属性是不可能的,那么实例方法呢?如果方法是静态的,它会工作吗?

将类设为静态的(实际上,静态类在幕后有一个实例)

在该静态类内部(或从任何外部类),您可以做任何您想做的事情,而无需实例化对象(包括获取属性)。

将该类设置为静态(实际上,静态类在幕后有一个实例)

在该静态类(或任何外部类)内,您可以做任何您想做的事情,而无需实例化对象(包括获取属性)。

public class Person
{
    [Obsolete("Obsolete field")]
    public int Field { get; set; }

    [Obsolete("Obsolete property")]
    public int Property { get; set; }

    [Obsolete("Obsolete method")]
    public void blahblahblah()
    { }
}
然后

“分析”类型的反射只需要
类型
对象,而不需要要分析的CLA实例。属性“活动”在
类型中,而不是在对象的每个实例中。如果编译时已知
Type
typeof(Person)
),那么这里没有问题。如果它是泛型
MyMethod()
T
,则相同。第三种常用方法是,如果您有一个
myObj
实例,那么
myObj.GetType()
将返回该实例的
Type
。还有第四种方法使用
字符串
并使用
Type.GetType()
但它需要全名,因此比较复杂

您可以使用反射字段、属性、方法(它们的描述符,而不是它们的值)进行“分析”(枚举)。元数据要清楚!)。。。都以
类型
对象开始。如果没有对象的实例,您就不能获取实例字段/属性的值,设置实例字段/属性的值,调用实例方法(但显然,您可以使用
静态
字段/属性/方法执行上述所有操作)

给定

public class Person
{
    [Obsolete("Obsolete field")]
    public int Field { get; set; }

    [Obsolete("Obsolete property")]
    public int Property { get; set; }

    [Obsolete("Obsolete method")]
    public void blahblahblah()
    { }
}
然后

“分析”类型的反射只需要
类型
对象,而不需要要分析的CLA实例。属性“活动”在
类型中,而不是在对象的每个实例中。如果编译时已知
Type
typeof(Person)
),那么这里没有问题。如果它是泛型
MyMethod()
T
,则相同。第三种常用方法是,如果您有一个
myObj
实例,那么
myObj.GetType()
将返回该实例的
Type
。还有第四种方法使用
字符串
并使用
Type.GetType()
但它需要全名,因此比较复杂

您可以使用反射字段、属性、方法(它们的描述符,而不是它们的值)进行“分析”(枚举)。元数据要清楚!)。。。都以
类型
对象开始。如果没有对象的实例,您不能做的是获取实例字段/属性的值,设置实例字段/属性的值,调用实例方法(但显然,您可以使用
static
字段/属性/方法执行上述所有操作)