我有一个生成部分类的WCF WebService。因此,我不能将DebuggerDisplayAttribute放在其中任何一个上,因为它会在每次更新Web服务引用时被覆盖。
我是否可以拥有为某些属性定义DebuggerDisplayAttribute的部分类,就像我们可以在MVC中使用MetadataType进行视图显示一样?
答案 0 :(得分:1)
你是正确的,更改生成的DataContract是浪费时间。
幸运的是,这些类是partial
,所以你可以拥有一个第二个类文件,它包含你需要的逻辑,但是没有生成。您可以使用调试器提示来注释该部分类。对于您的场景,您需要一个DebuggerTypeProxy,其中包含您创建的类型,以便由调试器实例化而不是您的真实类的实例:
// namespace should match the namespace in your reference.cs
namespace MyCompany.MyApp.Service
{
[DebuggerDisplay("Example")]
[DebuggerTypeProxy(typeof(InternalProxy))]
public partial class Example // name of your DataContract class in the reference.cs
{
internal class InternalProxy
{
private Example _realClass;
// the debugger instantiate this class
// with a reference to the instance being watched
public InternalProxy(Example realClass)
{
_realClass = realClass;
}
[DebuggerDisplay("Description = {Proxiedproperty}")]
public string Proxiedproperty {
// description is a genereated property
get { return _realClass.description; }
}
// add other properties if needed
}
}
}