我正在编写自定义PowerShell cmdlet,我想知道哪种方法可以验证参数.
我认为这可以在属性集访问器中或在Cmdlet执行期间完成:
[Cmdlet(VerbsCommon.Add,"X")]
public class AddX : Cmdlet {
private string _name;
[Parameter(
Mandatory=false,
HelpMessage="The name of the X")]
public string name {
get {return _name;}
set {
// Should the parameter be validated in the set accessor?
if (_name.Contains(" ")) {
// call ThrowTerminatingError
}
_name = value;
}
}
protected override void ProcessRecord() {
// or in the ProcessRecord method?
if (_name.Contains(" ")) {
// call ThrowTerminatingError
}
}
}
Run Code Online (Sandbox Code Playgroud)
哪种是"标准"方法?属性设置器,ProcessRecord还是完全不同的东西?
我想从自定义ASP.NET用户控件中公开一个复杂属性,以便可以从aspx页面中的控件标记设置它.
像这样的东西:
public class TestData {
public int X;
public int Y;
}
public partial class TestControl : System.Web.UI.UserControl {
public TestData TestProperty {
get {
return ViewState["TestProperty"] as TestData;
}
set {
ViewState["TestProperty"] = value;
}
}
}
Run Code Online (Sandbox Code Playgroud)
然后在包含控件的页面的.aspx文件中,我希望有类似的内容:
<div>
<testns:TestControl runat="server" ID="TestControl1" TestProperty="X:1,Y:2"/>
</div>
Run Code Online (Sandbox Code Playgroud) 是否有用于LDAP路径操作的.NET库?
我想拥有相当于的东西System.IO.Path
,允许例如做类似的事情
string ou1 = LDAPPath.Combine("OU=users","DC=x,DC=y");
string ou2 = LDAPPath.Parent("CN=someone,OU=users,DC=x,DC=y");
Run Code Online (Sandbox Code Playgroud)
否则,在.NET中处理LDAP专有名称的常用方法是什么?
澄清我的问题:我一般不会问".NET中的目录服务"; 我已经使用过它并完成了一些程序来执行某些任务.我觉得缺少的是一种操纵路径,解析专有名称等的正确方法,因为这应该是一个非常普遍的需求,我希望有一种更简洁的方法来做到这一点,而不是在逗号上分割字符串(1).
(1)例如,像在库中调用一个函数来分割逗号上的字符串
我有一个XML文档,其中包含一个节点,其中包含另一个对象的转义XML序列化,如下例所示:
<attribute>
<value>
<map>
<item>
<src>something</src>
<dest>something else</dest>
</item>
</map>
</value>
</attribute>
Run Code Online (Sandbox Code Playgroud)
如何将xslt模板应用于内部xml?特别是,我想得到一对夫妇src/dest的html表:
| src | dest |
| something | something else |
Run Code Online (Sandbox Code Playgroud) 我想获得一个Action<T>
使用反射接受参数的方法定义.我正在使用.NET核心1.1.
由于该类有两个具有相同名称的方法,我试图检查接受参数的类型以确保我得到正确的方法定义(而不是其他重载),但是比较似乎没有工作.
以下是一些显示此问题的代码:
using System;
using System.Linq;
using System.Reflection;
class ReflectMe {
public void SomeMethod<T>(Action<T> action) {
action(default(T));
}
public T SomeMethod<T>() {
return default(T);
}
}
class Program {
static void Main(string[] args) {
var reflectedMethod = typeof(ReflectMe).GetTypeInfo().GetMethods(BindingFlags.Public | BindingFlags.Instance)
.Where(m => m.Name == "SomeMethod" && m.IsGenericMethodDefinition)
.Where(m => {
var parameters = m.GetParameters();
if (parameters.Count() != 1) {
// this filters out the 1st method
return false;
}
var actionType = typeof(Action<>);
var parameterType = parameters[0].ParameterType; …
Run Code Online (Sandbox Code Playgroud) 在ElasticSearch中,是否可以对索引模板进行部分更新?
例如,我尝试仅使用以下内容更改默认分析器(使用 Sense):
PUT /_template/testtemplate/_update
{
"settings": {
"index":{
"analysis": {
"analyzer": {
"default": {
"type": "whitespace"
}
}
}
}
}
}
Run Code Online (Sandbox Code Playgroud)
但这不起作用,我收到一条错误消息Invalid index name [_template], must not start with '_'
: .
我是否必须使用 PUT 再次传递完整模板,或者是否有其他方法可以进行部分更新?
基于ConfigParser模块,我如何过滤掉并从ini文件中抛出每条注释?
import ConfigParser
config = ConfigParser.ConfigParser()
config.read("sample.cfg")
for section in config.sections():
print section
for option in config.options(section):
print option, "=", config.get(section, option)
Run Code Online (Sandbox Code Playgroud)
例如.在上面基本脚本下面的ini文件中打印出更多注释行,如:
something = 128 ; comment line1
; further comments
; one more line comment
Run Code Online (Sandbox Code Playgroud)
我需要的是只有段名和纯键值对,没有任何注释.ConfigParser是以某种方式处理此问题还是应该使用regexp ...或?干杯
有人可以向我解释这种行为吗?
如果您使用第一个字符串执行帖子底部的片段,它将返回与用于输入的字符串完全相同的字符串; 这就是我的预期.
输入1:
<?xml version='1.0' encoding='UTF-8'?>
<Company>
<Creator>Me</Creator>
<CreationDateTime>2010-01-25T21:58:32.493</CreationDateTime>
<Contacts>
<Contact>
<ContactID>365</ContactID>
</Contact>
</Contacts>
</Company>
Run Code Online (Sandbox Code Playgroud)
输出1:
<?xml version='1.0' encoding='UTF-8'?>
<Company>
<Creator>Me</Creator>
<CreationDateTime>2010-01-25T21:58:32.493</CreationDateTime>
<Contacts>
<Contact>
<ContactID>365</ContactID>
</Contact>
</Contacts>
</Company>
Run Code Online (Sandbox Code Playgroud)
现在,如果您使用第二行(const string xml
),这是相同的字符串,但在一行而不是两行,它返回以下
输入2
<?xml version='1.0' encoding='UTF-8'?>
<Company>
<Creator>Me</Creator>
<CreationDateTime>2010-01-25T21:58:32.493</CreationDateTime>
<Contacts>
<Contact>
<ContactID>365</ContactID>
</Contact>
</Contacts>
</Company>
Run Code Online (Sandbox Code Playgroud)
输出2
<?xml version='1.0' encoding='UTF-8'?>
<Creator>Me</Creator>2010-01-25T21:58:32.493
<Contacts>
<Contact>
<ContactID>365</ContactID>
</Contact>
</Contacts>
Run Code Online (Sandbox Code Playgroud)
2之间的唯一区别是第一个在xml声明之后有一个换行符,但是你可以看到第二个输出错过了Parent标签和第三个标签.任何想法?
这是我使用的代码:
public void XmlReader_Eats_Tags_IsTrue()
{
//this first xml declaration is on two lines - line break is right after the xml declaration …
Run Code Online (Sandbox Code Playgroud) c# ×5
xml ×2
.net ×1
.net-core ×1
asp.net ×1
cmdlets ×1
configparser ×1
escaping ×1
ldap ×1
memorystream ×1
powershell ×1
python ×1
reflection ×1
validation ×1
xmlreader ×1
xslt ×1