วิธีการสร้างแบบ formatter ข้อความแบบกำหนดเอง โดยใช้ Visual c#

การแปลบทความ การแปลบทความ
หมายเลขบทความ (Article ID): 310683 - ผลิตภัณฑ์ที่เกี่ยวข้องในบทความนี้
ขยายทั้งหมด | ยุบทั้งหมด

เนื้อหาบนหน้านี้

สรุป

บทความที่มีการทีละขั้นตอนนี้แสดงวิธีใช้ Visual c# เพื่อสร้าง formatter เป็นข้อความแบบกำหนดเองอย่างง่าย

กระบวนการSystem.Messagingnamespace แสดงระดับชั้นที่ช่วยให้คุณสามารถเชื่อมต่อไปยังคิวข้อความ ส่งข้อความ และได้รับข้อความ หรือแทรกข้อความจากคิว เมื่อต้องส่งข้อความลงในคิวที่ วัตถุถูก serialized โดย formatter ข้อความลงในเนื้อความของข้อความ กระบวนการSystem.Messagingnamespace มี formatters การสามแบบต่อไปนี้:
  • XmlMessageFormatter(Default)
  • BinaryMessageFormatter
  • ActiveXMessageFormatter
ในบางสถานการณ์ คุณอาจจำเป็นต้องพัฒนา formatter ของข้อความแบบกำหนดเองที่สามารถ serialize สตริงการลงในเนื้อความของข้อความ และ deserialize สตริงการเมื่อมีอ่านข้อความจากคิว

เมื่อต้องการสร้างแบบ formatter ข้อความแบบกำหนดเอง คุณต้องใช้การIMessageFormatterอินเทอร์เฟซ ซึ่งรวมอยู่ในนั้นSystem.Messagingnamespace อินเทอร์เฟซนี้ระบุวิธีการสามแบบต่อไปนี้:
  • การเขียน
  • Read
  • CanRead
เนื่องจากอินเทอร์เฟซนี้ใช้นั้นicloneableอินเทอร์เฟซโคลนวิธีต้องยังสามารถนำมาใช้

ประกาศคลาส

ในตัวอย่างนี้ เรียกคลา formatterMyFormatterและประกาศเป็นดังนี้:
using System;
using System.IO;
using System.Text;
using System.Messaging;

public class MyFormatter : IMessageFormatter
{

	public MyFormatter()
	{
		//The constructor can remain empty.
	}
}
				
หมายเหตุว่าโครงการอ้างอิงถึงSystem.Messaging.DLLจำเป็นต้องใช้ เมื่อต้องการเพิ่มการอ้างอิงนี้ใน Visual Studio .NET คลิกขวาอ้างอิง:เลือกเพิ่มการอ้างอิง.

วิธีเขียน

กระบวนการการเขียนวิธี serializes วัตถุลงในเนื้อความของข้อความเมื่อส่งข้อความลงในคิวที่ ในตัวอย่างนี้ formatter ที่ใช้เวลาในสตริงที่ และ serializes โดยใช้การเข้ารหัส UTF8 กระบวนการการเขียนใช้วิธีเป็นงานต่อไปนี้:
public void Write (System.Messaging.Message msg, object obj)
{
	//Declare a buffer.
	byte[] buff;

	//Place the string into the buffer using UTF8 encoding.
	buff = Encoding.UTF8.GetBytes (obj.ToString());

	//Create a new MemoryStream object passing the buffer.
	Stream stm = new MemoryStream(buff);

	//Assign the stream to the message's BodyStream property.
	msg.BodyStream = stm;
} 
				

วิธีอ่าน

กระบวนการReadวิธี deserializes เนื้อความของข้อความเมื่อคุณอ่าน หรือแทรกข้อความจากคิว essentially,Readกระบวนการที่จะดำเนินการกับการย้อนกลับวิธีการการเขียนวิธีการ
public object Read (System.Messaging.Message msg)
{
	//Obtain the BodyStream for the message.
	Stream stm = msg.BodyStream;

	//Create a StreamReader object used for reading from the stream.
	StreamReader reader = new StreamReader (stm);

	//Return the string read from the stream.
	//StreamReader.ReadToEnd returns a string.
	return reader.ReadToEnd();
}
				

วิธีการ CanRead

กระบวนการCanReadวิธีพยายามตรวจสอบว่า formatter ที่สามารถจัดการข้อความที่ถูกส่งผ่านไป สำหรับ brevity, formatter นี้อนุมานว่า เนื้อหาของข้อความเป็นสตริงที่ (ข้อความทั้งหมดในคิวถูกส่งโดยใช้ formatter นี้) และส่งกลับค่า True
public bool CanRead (System.Messaging.Message msg)
{
	return true;
}
				

ลอกแบบวิธี

กระบวนการโคลนวิธีการส่งกลับอินสแตนท์ใหม่ของ formatter ที่
public object Clone()
{
	return new MyFormatter();
}
				

ใช้แบบ formatter

หลังจากที่ดำเนินการ formatter คุณสามารถตั้งค่านี้formatterคุณสมบัตินี้MessageQueueวัตถุไปยังอินสแตนท์ใหม่ของ formatter นี้ ต่อไปนี้:
//Open an existing public queue called Test.	
MessageQueue msgQueue = new MessageQueue (@".\test");
//Set the Formatter property.
msgQueue.Formatter = new MyFormatter();
//Send a test message.
msgQueue.Send ("Test string message");
				

คุณสมบัติ

หมายเลขบทความ (Article ID): 310683 - รีวิวครั้งสุดท้าย: 19 ตุลาคม 2553 - Revision: 2.0
ใช้กับ
  • Microsoft Visual C# .NET 2002 Standard Edition
  • Microsoft Visual C# 2005 Express Edition
Keywords: 
kbbcl kbhowtomaster kbsample kbmt KB310683 KbMtth
แปลโดยคอมพิวเตอร์
ข้อมูลสำคัญ: บทความนี้แปลโดยซอฟต์แวร์การแปลด้วยคอมพิวเตอร์ของ Microsoft แทนที่จะเป็นนักแปลที่เป็นบุคคล Microsoft มีบทความที่แปลโดยนักแปลและบทความที่แปลด้วยคอมพิวเตอร์ เพื่อให้คุณสามารถเข้าถึงบทความทั้งหมดในฐานความรู้ของเรา ในภาษาของคุณเอง อย่างไรก็ตาม บทความที่แปลด้วยคอมพิวเตอร์นั้นอาจมีข้อบกพร่อง โดยอาจมีข้อผิดพลาดในคำศัพท์ รูปแบบการใช้ภาษาและไวยากรณ์ เช่นเดียวกับกรณีที่ชาวต่างชาติพูดผิดเมื่อพูดภาษาของคุณ Microsoft ไม่มีส่วนรับผิดชอบต่อความคลาดเคลื่อน ความผิดพลาดหรือความเสียหายที่เกิดจากการแปลเนื้อหาผิดพลาด หรือการใช้บทแปลของลูกค้า และ Microsoft มีการปรับปรุงซอฟต์แวร์การแปลด้วยคอมพิวเตอร์อยู่เป็นประจำ
ต่อไปนี้เป็นฉบับภาษาอังกฤษของบทความนี้:310683

ให้ข้อเสนอแนะ

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com