问题标签 [access-levels]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
ios - 由于“内部”保护级别 swift 4,扩展初始化程序不可访问
我在框架内的扩展中有一个便利初始化程序。我想在我的项目的另一个扩展中使用它。它授予我可以访问的所有内容的公共访问权限,但编译器一直说“由于'内部'保护级别,初始化程序无法访问”......
这是我在框架中的扩展:
这是我在项目中的扩展:
错误是当我调用 UIColor(hex) 时。
你知道这里有什么问题吗?
编辑:我添加了框架导入
java - Java 定义了一个显式的包私有修饰符
显然,Java 有一个访问级别的包私有,它通过不添加任何显式修饰符来实现。
但是没有办法显式添加这个修饰符吗?当我们只想在包中使用成员时,我们需要省略访问级别,这有点令人困惑。
如果没有办法,为什么 package private 决定成为默认级别?
例如,如果默认级别是公开的,我们会更有意识地定义相关的访问级别。
这不是为什么使用它的问题的重复,因为我知道为什么,我只是不知道为什么它是隐式定义而不能显式定义的。
编辑
您可以使用 Lombok 的@PackagePrivate显式定义它
用于指示注释实体具有包私有访问级别的明确意图。当前由 FieldDefaults 和 Value 使用,以避免使其成为公共、受保护或私有的字段之一。
ios - Swift:从不同的目标调用函数
我有两个目标 ( Target A
, Target B
),Target B
我想从中调用一个位于Target A
. 尝试Use of Unresolved Identifier
按预期编译时出现错误,因为ClassA.swift
它不是Target B
. 因此,我尝试将 Target 成员资格也设置ClassA.swift
为 include Target B
,但这样做的问题是ClassA.swift
涉及到这么多文件并且还导入了不同的模块。将其他所有内容包含在Target B
. 我还尝试通过将其声明为 as 来设置ClassA
它open
,但这并没有做任何事情(也许我在那里做错了什么)。不太确定我还能尝试Target A
从哪里调用该函数Target B
目标 A > ClassA.swift > staticFunctionA()
目标 B > ClassB.swift(调用 staticFunctionA())
ClassA.swift
有一些功能,这些功能涉及许多文件。该文件是许多其他功能的包装文件。当然,如果我将此文件作为 的一部分Target B
,我也必须将其他文件作为其中的一部分Target B
。
c# - 在重写的公共方法中访问私有方法
我目前在从覆盖的公共方法访问私有方法时遇到一些问题。
我的情况是这样的:我有一个编译的 .dll 文件,它基本上由这个组成
我需要改变方法PeformRequest()
,所以我创建了一个公共类,它继承OriginalHandler
并覆盖了方法:
为确保此方法不违反“影响”范围,我必须确保它仅在某些站点上得到评估,我们使用它来确保 HttpRequestProcess 仅影响使用此的所需站点
所以包括我ModifiedOriginalHandler
的包括这个
这是我遇到问题的地方,我可以从 SiteSpecificModifiedOriginalHandler 不调用受保护的方法PeformRequest
,
但可以调用内部调用所需函数的公共方法Request
,所以我创建了一个覆盖函数,以确保原始没有被调用但是我的修改版
这是我遇到问题的地方,RedirectIfConditionIsFulfilled
是一个私有方法,我不能这样调用这个方法。我可以在我的重写函数中删除这个调用,但这需要RedirectIfConditionIsFulfilled
被删除,这会改变我不想做的原始功能。
那么我该如何克服呢?
如何在覆盖的公共方法中访问私有方法?
c# - 如何防止引用程序直接访问类?(。网)
我很可能没有正确描述我的标题,并且完全缺乏我想要做的事情的术语......所以如果你正在阅读这篇文章并且知道我应该要求什么......请分享。
所以这是我的问题。我正在创建一个 DLL。这个 DLL 里面当然会有几个类。调用解决方案将需要访问这些类及其各种方法。
但是,我想强制调用程序仅创建“Parent\Root”类的一个实例,因为我需要某些信息,只要他们将使用属于此类的任何内容(想想有点像许可证密钥,但不是真的)。
所以从客户的角度来看..我希望它像这样工作..
现在从我的DLL方面,我在想这样的事情......
现在,只要我将 StoreLogic 和 ShopLogic 类声明为“Public”,我就可以做到这一点。但如果我这样做,客户现在可以这样做......
这是我不想要的。
c++ - “'A'类型的临时有受保护的析构函数”,但它的类型是B
在以下代码中,使用 Clang 8.0.0+ 编译,并且-std=c++17
使用创建派生类实例B{}
会产生错误error: temporary of type 'A' has protected destructor
。当临时具有类型(因此应该具有公共析构函数)时,为什么会A
出现在此消息中?B
swift - 由于“内部”保护级别,“init”不可访问
由于“内部”保护级别,“init”无法访问请帮我解决这个问题。谢谢
vb.net - 访问 IO.FileInfo 受保护属性(OriginalPath)的“最佳”方式?
我正在研究一系列方法,这些方法将测试给定路径以确定它是否(或至少可能)有效。我有几个重载可以接受一个IO.FileInfo
对象或一个IO.DirectoryInfo
对象——我个人更喜欢用它来帮助在此过程中尽快捕获无效字符。作为流程的一部分,我“需要”获取的一条信息基本上是用户提供的原始值——尤其是IO.FileInfo
在对象或对象的情况下,因为它们会自动将值添加到它确定为相对路径的任何字符串IO.DirectoryInfo
前面Environment.CurrentDirectory
.
例如:
实例化IO.FileInfo
具有以下属性(以及其他属性)的对象:
DirectoryName
-"C:\Development\My Solution\My Project\bin\Debug\Testing"
Exists
-False
Extension
-""
FullName
-"C:\Development\My Solution\My Project\bin\Debug\Testing\This is a test"
Name
-"This is a test"
OriginalPath
-"Testing\This is a test"
最后一个属性是我最感兴趣的。它是类的Protected
属性,IO.FileInfo
继承自IO.FileSystemInfo
类,但它似乎是检索传递给IO.FileInfo
构造函数的原始值的最佳方法。显然,我不能用简单的方式直接访问该属性Dim TestPath As String = TestFile.OriginalPath
- IDE 给出的显示错误“ 'System.IO.FileSystemInfo.OriginalPath' is not accessible in this context because it is 'Protected'
” - 所以我只能想到一种方法来获取这条特定信息:创建一个全新的类,该类继承IO.FileSystemInfo
的Public
属性为从OriginalPath
基类读取的。
请注意:我确实有一个接受String
值的重载方法,但我实际上正在考虑尝试将其“隐藏”在Private
修饰符后面,以便只有FileInfo
和DirectoryInfo
对象可以用于调用此方法。我的主要理由是,如果一个FileInfo
或DirectoryInfo
对象由于字符串中的无效字符(或任何其他原因)而无法实例化,我没有理由调用此方法,我可能能够“清理”代码一点。
无论如何,创建一个真正只用于在这个特定场景中访问这个属性的整个单独的类对于应该(或至少可以)是一件相当简单的事情来说似乎是一个非常多的开销。不幸的是,我想不出任何其他方法来提取该信息,我只是想知道我是否可能过度思考了这一点。
与此同时,我继续创建了一个TempFileInfo
用于测试的类(注意:我还没有实际测试过),而没有为任何常规属性显式实现任何“自定义”代码Public
(从IO.FileSystemInfo
类继承时需要):
您会注意到,我还包括一个Widening Operator
应该允许我从“常规”IO.FileInfo
对象转换为我的对象的TempFileInfo
对象,以便我可以访问我的“自定义”OriginalPath
属性。这是迄今为止我发现的“从这里到达那里”的唯一方法,但我想继续在这里询问,以防有其他建议或我可能忽略的事情。
这种实现方法的唯一“可取之处”是,因为“自定义” TempFileInfo
、标准IO.FileInfo
和标准IO.DirectoryInfo
类都继承自IO.FileSystemInfo
该类,我应该能够简单地创建一个重载Widening Operator
方法来转换IO.FileInfo
对象以及IO.DirectoryInfo
对象,而不必创建一个单独的TempDirInfo
类。
laravel - 基于分层的权限
我一直在使用 spatie 包在 laravel 项目中处理 ACL。
例如,我有两种角色:
- 员工
- 经理
员工只能访问他的个人信息,但经理可以访问他和他的直接/间接员工的详细信息。
我有一个名为“查看员工地址”的权限
对于员工,我知道此权限仅适用于该特定员工,但对于经理,我如何确定权限级别?我的意思是我如何检查是否允许经理只看到他的地址或他的直接/间接员工?