1

私は自分のプロジェクトにいくつかのクラスを持っていますが、いくつかのプロパティはBrowsable(false)ユーザーが見ることができないようになっています:

public class OrderEntity{
    public int Id { get; set;}   
    [Browsable(false)]
    public int ProductId { get; set;}   
    ....
}

エンドユーザーが管理者である場合、彼は を見ることができますがProductId、別のユーザーはそれを見ることができません。

だから私はこのようなものが必要です:

public class OrderEntity{
    public int Id { get; set;}   
    [CustomizedBrowsable(false)]
    public int ProductId { get; set;}   
    ....
}


public class CustomizedBrowsable: Attribute
{
  if(AppContext.UserCode == "Admin") // The current user code saved in a static variable AppContext.UserCode.
    //do somethings   
  else
    //do somethings else 
}
4

2 に答える 2

1

これは、属性を介してできることではありませBrowsableAttributesealedbindings を介してこれを行うには、カスタム型記述子が必要です。そのためICustomTypeDescriptor、型に (直接または を介し​​てTypeDescriptionProvider) 実装し、 custom を提供し、そこPropertyDescriptorでのブラウズビリティの定義方法を変更する必要があります( 、IIRC)。IsBrowsable

これは大変な作業です。

率直に言って、ほとんどすべての場合、バインドを手動で制御し、セキュリティ レベルを確認した後にのみ列/入力/その他を追加する方がよいでしょう。

于 2020-01-11T10:16:50.043 に答える