DebuggerDisplayAttribute与部分类

时间:2015-06-11 08:27:11

标签: c# visual-studio wcf debugging visual-studio-debugging

我有一个生成部分类的WCF WebService。因此,我不能将DebuggerDisplayAttribute放在其中任何一个上,因为它会在每次更新Web服务引用时被覆盖。

我是否可以拥有为某些属性定义DebuggerDisplayAttribute的部分类,就像我们可以在MVC中使用MetadataType进行视图显示一样?

1 个答案:

答案 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
        }
    }
}