gpt4 book ai didi

c# - 添加属性的默认实现

转载 作者:行者123 更新时间:2023-11-30 14:50:12 25 4
gpt4 key购买 nike

我得到了以下类(class):

public class Foo
{
public string Property1
{
get { return (string)Properties["property1"]; }
set { Properties.Add("property1", value); }
}
public string Property2
{
get { return (string)Properties["property2"]; }
set { Properties.Add("property2", value); }
}

//A lot more here

public string Property30
{
get { return (string)Properties["property30"]; }
set { Properties.Add("property30", value); }
}

public string Property31
{
get { return (string)Properties["property31"]; }
set { Properties.Add("property31", value); }
}

public Dictionary<string, object> Properties { get; set; }
}

我多次复制 getter 和 setter,这有点麻烦该类大约有 20/30 个属性。有没有办法自动实现这个。我通过使 Foo 动态化并实现 TryGetMember 来完成实现,但我不喜欢对象不再是强类型的方式(尤其是 visual studio 中没有自动完成这一事实)。

干杯

最佳答案

如果您使用的是 Visual Studio,则可以使用 snippets .对于属性,这些默认情况下可用。 enter image description here

您也可以create your own ,或使用工具/代码片段管理器导入其他开发人员或第三方制作的片段。

您的代码段大致如下所示:

<?xml version="1.0" encoding="utf-8" ?>
<CodeSnippets xmlns="http://schemas.microsoft.com/VisualStudio/2005/CodeSnippet">
<CodeSnippet Format="1.0.0">
<Header>
<Title>myprop</Title>
<Shortcut>myprop</Shortcut>
<Description></Description>
<Author>Me</Author>
<SnippetTypes>
<SnippetType>Expansion</SnippetType>
</SnippetTypes>
</Header>
<Snippet>
<Declarations>
<Literal>
<ID>type</ID>
<ToolTip>Property type</ToolTip>
<Default>int</Default>
</Literal>
<Literal>
<ID>property</ID>
<ToolTip>Property name</ToolTip>
<Default>MyProperty</Default>
</Literal>
<Literal>
<ID>field</ID>
<ToolTip>The variable backing this property</ToolTip>
<Default>myVar</Default>
</Literal>
</Declarations>
<Code Language="csharp"><![CDATA[private $type$ $field$;

public $type$ $property$
{
get { return ($type$)Properties["$field$"];}
set { Properties.Add("$field$",value);}
}
$end$]]>
</Code>
</Snippet>
</CodeSnippet>
</CodeSnippets>

关于c# - 添加属性的默认实现,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37343549/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com