我正在使用CodeDom生成一個包含一些方法的類。我可以聲明屬性爲我的方法看起來當它創建了一個參數化單元測試什麼的Pex做類似:方法的自定義屬性聲明
[PexMethod]
public void myMethod()
不過,我想包括更多的東西給它喜歡:
[PexMethod (Max Branches = 1000)]
public void myMethod()
但我不能包括((Max Branches = 1000))
。你能幫我一下嗎?
我正在使用CodeDom生成一個包含一些方法的類。我可以聲明屬性爲我的方法看起來當它創建了一個參數化單元測試什麼的Pex做類似:方法的自定義屬性聲明
[PexMethod]
public void myMethod()
不過,我想包括更多的東西給它喜歡:
[PexMethod (Max Branches = 1000)]
public void myMethod()
但我不能包括((Max Branches = 1000))
。你能幫我一下嗎?
屬性值中不能有空格,它們只是自定義屬性類中公共屬性的包裝器。例如:
public class TestAttribute : Attribute
{
public bool Enabled { get; set; }
}
而且你可以使用此類似這樣的
[TestAttribute(Enabled = true)]
void Foo(){}
如此以來,屬性映射到一個屬性它必須遵循正常的語法命名規則。
MaxBranches屬性位於基類(PexSettingsAttributeBase)上。這可能是你有麻煩的原因。您可能反映了錯誤的類型以找到要設置的PropertyInfo。
我不知道你的問題是什麼,而是你可以簡單地設置the Value
property上CodeAttributeArgument
:
var method =
new CodeMemberMethod
{
Name = "MyMethod",
CustomAttributes =
{
new CodeAttributeDeclaration
{
Name = "PexMethod",
Arguments =
{
new CodeAttributeArgument
{
Name = "MaxBranches",
Value = new CodePrimitiveExpression(1000)
}
}
}
}
};
非常感謝svick,我已經解決了我的問題。 – Peter
我知道這是一個遠射,看到這個線程是2歲,但我如何創建與枚舉值的參數? [WebInvoke(方法= 「POST」,UriTemplate = 「MyTemplate的」,RequestFormat = WebMessageFormat.Json,ResponseFormat = WebMessageFormat.Json)] 我已經成功地做琴絃,但我不知道該怎麼做關於枚舉 - RequestFormat = WebMessageFormat.Json和ResponseFormat = WebMessageFormat.Json – Shaggydog
此外,我將如何去創建這個[FaultContract(typeof(Collection
CodeAttributeArgument codeAttr = new CodeAttributeArgument(new CodePrimitiveExpression("Max Branches = 1000"));
CodeAttributeDeclaration codeAttrDecl = new CodeAttributeDeclaration("PexMethod",codeAttr);
mymethod.CustomAttributes.Add(codeAttrDecl);
如何使用的CodeDOM – Lijo