我想不时地手动设置一个对象。我的一些课程相当复杂,可能有14个或更多变量。 VS2010或其他地方是否有可以进行类描述并将其转换为构造对象的工具?
我理解这可能没有意义,所以请按照以下简化示例进行操作:
internal class MyObject
{
internal string Description { get; set; }
internal int Stock { get; set; }
internal int DaysSinceLastCount { get; set; }
internal double TotalValue { get; set; }
internal bool IsUpToDate { get; set; }
internal bool IsUnableToBeSet
{
get { return Stock==5; }
}
}
现在,通常,如果我想以手动方式构建它来进行测试,我会做这样的事情:
MyObject myObject = new MyObject
{
Description = "my description",
Stock = 7,
DaysSinceLastCount = 10,
TotalValue = 1000.10,
IsUpToDate= true;
};
我的问题是,对于大班,我发现自己花了很多时间打字 - 有更简单的方法吗?是否有一些尚未发现的Visual Studio功能知道如何自动创建对象。当我输入“MyObject myObject = new ...”时,intellisense似乎不太过分。我正在考虑复制粘贴然后重新开始帮助,但我想在走向那条路之前我会问。
EDIT: resex \{.*?\} and replace with =, to help build may be an option
有一些SO主题需要构建构造函数,但我不确定是否有太多的上述内容。谢谢你的帮助!
答案 0 :(得分:0)
所以你需要用任何随机数据来测试类。为什么不使用带有bool参数的构造函数..
internal class MyObject
{
internal string Description { get; set; }
internal int Stock { get; set; }
internal int DaysSinceLastCount { get; set; }
internal double TotalValue { get; set; }
internal bool IsUpToDate { get; set; }
internal bool IsUnableToBeSet
{
get { return Stock==5; }
}
public MyObject(bool isTest)
{
if(isTest==true)
{
Description=this.GetHashCode().ToString();
Stock=new Random().Next();
DaysSinceLastCount=new Random().Next();
TotalValue=new Random().Next();
IsUpToDate=true;
}
else
//do nothing
}
}
答案 1 :(得分:0)
您可以使用代码段。但是,您必须手动编写一次。例如,使用下面的代码段,我可以通过输入以下内容创建一个新对象:
someobject [tab] [tab]
将代码段放在例如
中.. \ Documents \ Visual Studio 2010 \ Code Snippets \ Visual C#\ My Code Snippets
<?xml version="1.0" encoding="utf-8"?>
<CodeSnippets xmlns="http://schemas.microsoft.com/VisualStudio/2005/CodeSnippet">
<CodeSnippet Format="1.0.0">
<Header>
<Title>
New Object
</Title>
<Shortcut>someobject</Shortcut>
</Header>
<Snippet>
<Declarations>
<Literal>
<ID>InstanceName</ID>
<ToolTip>Name of the instance</ToolTip>
<Default>myObject</Default>
<Type>System.String</Type>
</Literal>
<Literal>
<ID>Name</ID>
<ToolTip>Name property</ToolTip>
<Default>Name</Default>
<Type>System.String</Type>
</Literal>
<Literal>
<ID>Value</ID>
<ToolTip>Value property</ToolTip>
<Default>Value</Default>
<Type>System.String</Type>
</Literal>
</Declarations>
<Code Language="CSharp">
<![CDATA[var $InstanceName$ = new MyObject
{
Name = "$Name$",
Value = "$Value$"
};]]>
</Code>
</Snippet>
</CodeSnippet>
</CodeSnippets>
答案 2 :(得分:0)
当你有LARGE类时,我想要做的唯一方法是复制类,然后查找并替换花括号\{.*?\}
内的信息并替换为= , \n\r
(在NotePad ++中)如评论中所述。然后我手动替换internal string
或internal int
等,并填写我的值。这不是理想或优雅,但我只是因为没有工具可以做到这一点。
如果我像这样格式化我的课程会有所帮助:
internal class MyObject
{
internal string Description { get; set; }
internal int Stock { get; set; }
internal int DaysSinceLastCount { get; set; }
internal double TotalValue { get; set; }
internal bool IsUpToDate { get; set; }
internal bool IsUnableToBeSet { get { return Stock==5; } }
}
因为这有助于正则表达式拿起最后一个{},即使我必须删除它,因为没有设置。
再次,请记住,这是为了为LARGE类而设计的 - 而不是上面的那个! 如果有人能想到更好的方式,我会很乐意重新分配答案!
[编辑] =在VS2012之前,您应该使用“{。@}”进行上述搜索。 See this question