Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/301.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 在类中添加临时字段,只是为了帮助开发?_C#_.net_Vb.net - Fatal编程技术网

C# 在类中添加临时字段,只是为了帮助开发?

C# 在类中添加临时字段,只是为了帮助开发?,c#,.net,vb.net,C#,.net,Vb.net,我想知道使用.Net自定义类型是否可以仅为对象的生命周期添加临时字段。我不是想在POCO类中添加一个永久的字段,而是想做一些临时的事情。例如,考虑一个具有3个字段的人类: Id int Name string Status string 就在工作时,我需要存储旧状态。我不想要一个可以帮助开发的永久字段。您可以派生新的“仅调试”版本的类,并在其中添加新字段。如果您使用某种工厂或依赖项注入框架来构造对象,您应该能够在运行时这样做 class DebugWrapper : MyPlainClass

我想知道使用.Net自定义类型是否可以仅为对象的生命周期添加临时字段。我不是想在POCO类中添加一个永久的字段,而是想做一些临时的事情。例如,考虑一个具有3个字段的人类:

Id int
Name string
Status string
就在工作时,我需要存储旧状态。我不想要一个可以帮助开发的永久字段。

您可以派生新的“仅调试”版本的类,并在其中添加新字段。如果您使用某种工厂或依赖项注入框架来构造对象,您应该能够在运行时这样做

class DebugWrapper : MyPlainClass
{
     public string AdditionalData {get;set;}
}
还有一个选项是使用
#if DEBUG
为调试构建添加字段。可能会起作用,但您可能会面临测试代码的风险,而这些代码您永远不会提供给其他人—所以请尽量不要走这条路:

class MyPlainClass
{
    // normal fields
#if DEBUG
         public string AdditionalData {get;set;}
#endif
}

“工作时”-你是说在重构代码时?或者当代码在运行时工作时?但字段只是对象的生命。伙计们,我认为他问的问题非常清楚,我认为Alexei的答案非常好。我认为很明显,他想临时向类中添加一个字段,而且确实有办法做到这一点。我唯一的问题是它的“为什么”方面,但这不是要问的问题;事实上,这个问题是探索IOC/DI、多态性和编译器条件的可能性的好方法;我应该说,这对本网站来说是一个非常有效的主题,肯定会帮助其他人。@user576510好的,我很高兴有人能够正确理解你的问题-如果你下次付出更多的努力,你会得到更多的帮助。我喜欢这个答案;另一种选择是考虑IOC容器,在调试模式下,您可以注入修改后的类,在发布时,我们使用传统容器。只要访问调试添加的代码驻留在类的调试版本中,那么一切都会很好;StructureMap是一个很好的起点。