在抽象类中获取属性的set访问器是不可能的?

时间:2010-05-17 13:14:08

标签: c# reflection properties

鉴于班级':

public abstract class AbstractEntity
{
    public virtual Guid Id { get; private set; }
}

public class Entity
{
    public virtual Guid Id { get; private set; }
}

属性'Id'的PropertyInfo。

调用方法时:

PropertyInfo.GetAccessors()

当类抽象(实体)时,它返回get-method和set-method, 但只有当类是抽象的时才使用get方法(AbstractEntity)。

这是为什么?还有另一种方法从具有私有集的属性中获取set方法吗?

2 个答案:

答案 0 :(得分:2)

如果你想获得集合的MethodInfo,你可以。这并不意味着你可以实际使用它,凯文在他的回答中指出。

Type t = typeof(AbstractEntity);
MethodInfo[] mi = t.GetProperty("Id").GetAccessors(true);

答案 1 :(得分:1)

在抽象类中,您无法实例化它。除非反思,没有任何东西可以称之为私人制定者。在反射中,您仍然需要实例化类(不包括静态项)来访问属性调用方法等,这不能在抽象类中完成。能够访问它不会给你任何东西,事实上没有什么可以访问它来使用它。