TraceListener.GetSupportedAttributes 方法
定义
重要
一些信息与预发行产品相关,相应产品在发行之前可能会进行重大修改。 对于此处提供的信息,Microsoft 不作任何明示或暗示的担保。
获取跟踪侦听器支持的自定义特性。
protected:
virtual cli::array <System::String ^> ^ GetSupportedAttributes();
protected public:
virtual cli::array <System::String ^> ^ GetSupportedAttributes();
protected virtual string[]? GetSupportedAttributes ();
protected virtual string[] GetSupportedAttributes ();
protected internal virtual string[] GetSupportedAttributes ();
abstract member GetSupportedAttributes : unit -> string[]
override this.GetSupportedAttributes : unit -> string[]
Protected Overridable Function GetSupportedAttributes () As String()
Protected Friend Overridable Function GetSupportedAttributes () As String()
返回
String[]
为跟踪侦听器支持的自定义特性命名的字符串数组;或者如果没有自定义特性,则为 null
。
示例
下面的代码示例演示自定义跟踪侦听器的 GetSupportedAttributes 方法的重写。
// This code example uses the following application configuration file:
//<?xml version="1.0" encoding="utf-8"?>
// <source name="TraceTest" switchName="SourceSwitch" switchType="System.Diagnostics.SourceSwitch" >
// <add name="Testlistener" />
// <add name="SourceSwitch" value="Warning" />
// <add name="Testlistener" type="CustomTraceListener.TestListener, CustomTraceListener, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null" initializeData="TestListener" Source="test"/>
// <trace autoflush="true" indentsize="4" />
using System;
using System.Diagnostics;
using System.Configuration;
using System.Reflection;
using System.Collections;
namespace CustomTraceListener
{
class Program
{
static void Main(string[] args)
{
TraceSource ts = new TraceSource("TraceTest");
Console.WriteLine(ts.Switch.DisplayName);
foreach (TraceListener traceListener in ts.Listeners)
{
Console.Write("TraceListener: " + traceListener.Name + "\t");
// The following output can be used to update the configuration file.
Console.WriteLine("AssemblyQualifiedName = " +
(traceListener.GetType().AssemblyQualifiedName));
}
ts.TraceEvent(TraceEventType.Error, 1, "test error message");
}
}
public class TestListener : TraceListener
{
string source;
string name;
public TestListener(string listenerName)
{
name = listenerName;
}
public string Source
{
get
{
foreach (DictionaryEntry de in this.Attributes)
if (de.Key.ToString().ToLower() == "source")
source = de.Value.ToString();
return source;
}
set { source = value; }
}
public override void Write(string s)
{
Console.Write(name + " " + Source + ": " + s);
}
public override void WriteLine(string s)
{
Console.WriteLine(s);
}
protected override string[] GetSupportedAttributes()
{
return new string[] { "Source" };
}
}
}
// This code example creates the following output:
/*
SourceSwitch
TraceListener: Default AssemblyQualifiedName = System.Diagnostics.DefaultTraceL
istener, System, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e0
89
TraceListener: Testlistener AssemblyQualifiedName = CustomTraceListener.Test
Listener, CustomTraceListener, Version=1.0.0.0, Culture=neutral, PublicKeyToken=
null
TestListener test: TraceTest Error: 1 : test error message
*/
' This code example uses the following application configuration file:
'<?xml version="1.0" encoding="utf-8"?>
' <source name="TraceTest" switchName="SourceSwitch" switchType="System.Diagnostics.SourceSwitch" >
' <add name="Testlistener" />
' <add name="SourceSwitch" value="Warning" />
' <add name="Testlistener" type="CustomTraceListener.TestListener, CustomTraceListener, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null" initializeData="TestListener" Source="test"/>
' <trace autoflush="true" indentsize="4" />
Imports System.Diagnostics
Imports System.Configuration
Imports System.Reflection
Imports System.Collections
Namespace CustomTraceListener
Class Program
Shared Sub Main(ByVal args() As String)
Dim ts As New TraceSource("TraceTest")
Console.WriteLine(ts.Switch.DisplayName)
Dim traceListener As TraceListener
For Each traceListener In ts.Listeners
Console.Write("TraceListener: " + traceListener.Name + vbTab)
' The following output can be used to update the configuration file.
Console.WriteLine("AssemblyQualifiedName = " + traceListener.GetType().AssemblyQualifiedName)
Next traceListener
ts.TraceEvent(TraceEventType.Error, 1, "test error message")
End Sub
End Class
Public Class TestListener
Inherits TraceListener
Private [m_source] As String
Private m_name As String
Public Sub New(ByVal listenerName As String)
m_name = listenerName
End Sub
Public Property [Source]() As String
Get
Dim de As DictionaryEntry
For Each de In Me.Attributes
If de.Key.ToString().ToLower() = "source" Then
[Source] = de.Value.ToString()
End If
Next de
Return [m_source]
End Get
Set(ByVal value As String)
[m_source] = value
End Set
End Property
Public Overrides Sub Write(ByVal s As String)
Console.Write(m_name + " " + [Source] + ": " + s)
End Sub
Public Overrides Sub WriteLine(ByVal s As String)
Console.WriteLine(s)
End Sub
Protected Overrides Function GetSupportedAttributes() As String()
Return New String() {"Source"}
End Function 'GetSupportedAttributes
End Class
End Namespace 'CustomTraceListener
' This code example creates the following output:
'
'SourceSwitch
'TraceListener: Default AssemblyQualifiedName = System.Diagnostics.DefaultTraceL
'istener, System, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e0
'89
'TraceListener: Testlistener AssemblyQualifiedName = CustomTraceListener.Test
'Listener, CustomTraceListener, Version=1.0.0.0, Culture=neutral, PublicKeyToken=
'null
'TestListener test: TraceTest Error: 1 : test error message
'
注解
的默认实现 GetSupportedAttributes 返回 null
。
继承者说明
从 TraceListener 类或派生类继承时,可以重写 GetSupportedAttributes() 方法,为类提供自定义属性。