这个问题类似于c#内部抽象类,如何隐藏外部使用但我的动机不同.这是场景
我从以下开始:
internal class InternalTypeA {...}
public class PublicClass
{
private readonly InternalTypeA _fieldA;
...
}
Run Code Online (Sandbox Code Playgroud)
上面的编译很好.但后来我决定提取一个基类并尝试编写以下内容:
public abstract class PublicBaseClass
{
protected readonly InternalTypeA _fieldA;
...
}
Run Code Online (Sandbox Code Playgroud)
因此问题是,受保护的成员在程序集外部是可见的,但是是内部类型,因此它不会编译.
手头的问题是如何(或者我可以?)告诉编译器只有与PublicBaseClass相同的程序集中的公共类可以继承它,因此_fieldA不会在程序集之外公开?
或者是否有另一种方法可以做我想做的事情,有一个公共超类和一组公共基类,它们都在同一个程序集中,并使用它们的公共("受保护")代码中的该程序集的内部类型?
到目前为止我唯一的想法是:
public abstract class PublicBaseClass
{
private readonly InternalTypeA _fieldA;
protected object FieldA { get { return _fieldA; } }
...
}
public class SubClass1 : PublicBaseClass
{
private InternalTypeA _fieldA { get { return (InternalTypeA)FieldA; } }
}
public class SubClass2 : PublicBaseClass
{
private InternalTypeA …Run Code Online (Sandbox Code Playgroud) 我正在尝试设置一个全局管道库,它将@Library()根据这些指令显式加载。我在从 master 分支加载默认库版本方面工作正常。
我无法做的是弄清楚如何配置事物,以便它可以使用Library('lib-name@branch-name')语法根据请求加载不同的分支。
指令说:
“使用旧版 SCM 时,您需要在 SCM 配置中的某处包含 ${library.pipeline-utils.version}。”
我曾尝试使用${library.pipeline-utils.version}作为Branch Specifier我能想到的唯一合乎逻辑的地方放置它的值。但这只是打破了事情。尝试加载库失败:
Fetching upstream changes from ssh://git@stash:7999/jen/pipeline-utils.git
> git --version # timeout=10
> git fetch --tags --progress ssh://git@stash:7999/jen/pipeline-utils.git +refs/heads/*:refs/remotes/origin/*
> git rev-parse refs/remotes/origin/${library.pipeline-utils.version}^{commit} # timeout=10
> git rev-parse refs/remotes/origin/origin/${library.pipeline-utils.version}^{commit} # timeout=10
> git rev-parse origin/${library.pipeline-utils.version}^{commit} # timeout=10
ERROR: Couldn't find any revision to build. Verify the repository and branch configuration for this job.
Run Code Online (Sandbox Code Playgroud)
这让我觉得我把变量放在正确的地方,但詹金斯没有插入它。(漏洞?)
这是使用 Jenkins 2.7.1 和 Pipeline …
我在Python中有一个实用程序模块,需要知道它在其中使用的应用程序的名称。实际上,这是指用来启动应用程序的顶级python脚本的名称(即__name == “ __main__”为真)。__name__给了我当前python文件的名称,但是如何获得调用链中最顶级的文件的名称?
我有一个带有工具提示的按钮,定义如下:
<Button Width="25" ToolTip="Delete selected name (Ctrl + F12).">-</Button>
Run Code Online (Sandbox Code Playgroud)
当我在运行时将鼠标悬停在按钮上时,工具提示显示为
(.删除所选名称 (Ctrl + F12
我也尝试将工具提示定义为
<Button Width="25">
<Button.ToolTip>Delete selected name (Ctrl + F12).</Button.ToolTip>
-
</Button>
Run Code Online (Sandbox Code Playgroud)
我也试过用括号代替括号。
在所有情况下,最终关闭 ) 或 ] 之后的文本都被截断并附加到字符串的前面,以开头 ( 或 [ 为前缀。我已经在谷歌上搜索了工具提示所需的任何特殊转义提示,然后就干了。我是不是在某处错过了明显的东西,还是我最终会失去控制?:-|
这是使用 .Net 框架的 4.0 版本。