如何判断类属性是否具有公共集(.NET)?

Jos*_*off 6 .net c# data-binding reflection

我有这个:

public string Log
        {
            get { return log; }
            protected set
            {
                if (log != value)
                {
                    MarkModified(PropertyNames.Log, log);
                    log = value;
                }
            }

        }
Run Code Online (Sandbox Code Playgroud)

我的数据绑定实用程序类执行此操作:

PropertyInfo pi = ReflectionHelper.GetPropertyInfo(boundObjectType, sourceProperty);

if (!pi.CanWrite)
                SetReadOnlyCharacteristics(boundEditor);
Run Code Online (Sandbox Code Playgroud)

但PropertyInfo.CanWrite并不关心该集是否可公开访问,只是它存在.

如何确定是否有公共场景,而不仅仅是任何场景?

Jon*_*eet 1

其他答案中建议对 ReflectionHelper 进行更改的替代方法是调用pi.GetSetMethod(false)并查看结果是否为 null。