如何限制引用库中的公共访问修饰符?

时间:2017-06-01 08:38:49

标签: c# wpf dll restrict

我有两个不同的库,它们引用了名为base.dll的基本库。一个用于Web平台的库另一个用于Windows平台(WPF)的库。我必须限制在WPF平台中限制一个公共属性,但我想在Web平台中访问它。怎么能实现这个?我正在尝试条件编译,但我不知道该怎么做。请帮帮我

对于Ex: - 基础库:

public Class CommonClass{
    public string CssClass
               {
            get;
            set;
                }
}

Referenced Library 1(Web) - 引用基础库,需要访问此库中的CssClass

引用库2:(WPF) - 引用基库,需要在此库中限制CssClass

1 个答案:

答案 0 :(得分:1)

这实际上听起来像是一个设计缺陷。您创建一个库并定义该库的用户应该可以访问哪些属性。通常,您不会隐藏特定客户的特定属性。

但是,我认为您可以通过制作属性internal并使用base.dll中的InternalsVisibleToAttribute来实现您想要的效果:

[assembly: InternalsVisibleTo("webplatformassembly")]

public Class CommonClass{
    internal string CssClass
    {
        get;
        set;
    }
}

这样,除了InternalsVisibleTo属性中提到的属性外,没有客户端可以看到该属性。

另请参阅:Friend Assemblies (C# and Visual Basic)