UrlAttribute 类
定义
重要
一些信息与预发行产品相关,相应产品在发行之前可能会进行重大修改。 对于此处提供的信息,Microsoft 不作任何明示或暗示的担保。
定义可在调用站点上用于指定将发生激活的 URL 的特性。 此类不能被继承。
public ref class UrlAttribute sealed : System::Runtime::Remoting::Contexts::ContextAttribute
[System.Serializable]
public sealed class UrlAttribute : System.Runtime.Remoting.Contexts.ContextAttribute
[System.Serializable]
[System.Runtime.InteropServices.ComVisible(true)]
public sealed class UrlAttribute : System.Runtime.Remoting.Contexts.ContextAttribute
[System.Serializable]
[System.Runtime.InteropServices.ComVisible(true)]
[System.Security.SecurityCritical]
public sealed class UrlAttribute : System.Runtime.Remoting.Contexts.ContextAttribute
[<System.Serializable>]
type UrlAttribute = class
inherit ContextAttribute
[<System.Serializable>]
[<System.Runtime.InteropServices.ComVisible(true)>]
type UrlAttribute = class
inherit ContextAttribute
[<System.Serializable>]
[<System.Runtime.InteropServices.ComVisible(true)>]
[<System.Security.SecurityCritical>]
type UrlAttribute = class
inherit ContextAttribute
Public NotInheritable Class UrlAttribute
Inherits ContextAttribute
- 继承
- 属性
示例
下面的代码示例演示了在设置客户端激活远程处理时使用 UrlAttribute 。 该示例包含三个部分:客户端、服务器以及客户端和服务器使用的远程对象。
以下代码示例演示客户端:
#using <System.Runtime.Remoting.dll>
#using <System.dll>
#using "RemoteObject.dll"
using namespace System;
using namespace System::Runtime::Remoting;
using namespace System::Runtime::Remoting::Activation;
using namespace System::Runtime::Remoting::Channels;
using namespace System::Runtime::Remoting::Channels::Tcp;
[STAThread]
int main()
{
// Report initial status.
Console::WriteLine( "Client starting." );
// Register TCP channel.
ChannelServices::RegisterChannel( gcnew TcpChannel );
// Create UrlAttribute.
UrlAttribute^ attribute = gcnew UrlAttribute( "tcp://localhost:1234/RemoteApp" );
Console::WriteLine( "UrlAttribute value: {0}", attribute->UrlValue );
array<Object^>^activationAttributes = {attribute};
// Use UrlAttribute to register for client activated remote object.
RemotingConfiguration::RegisterActivatedClientType( RemoteObject::typeid, "tcp://localhost:1234/RemoteApp" );
// Activate remote object.
Console::WriteLine( "Activating remote object." );
RemoteObject ^ obj = dynamic_cast<RemoteObject^>(Activator::CreateInstance( RemoteObject::typeid, nullptr, activationAttributes ));
// Invoke a method on it.
Console::WriteLine( "Invoking Hello() on remote object." );
obj->Hello();
// Inform user of termination.
Console::WriteLine( "Terminating client." );
}
using System;
using System.Runtime.Remoting;
using System.Runtime.Remoting.Activation;
using System.Runtime.Remoting.Channels;
using System.Runtime.Remoting.Channels.Tcp;
public class Client
{
[STAThread]
public static void Main()
{
// Report the initial status.
Console.WriteLine("Starting client.");
// Register the TCP channel.
ChannelServices.RegisterChannel(new TcpChannel());
// Create a url attribute object.
UrlAttribute attribute =
new UrlAttribute("tcp://localhost:1234/RemoteApp");
Console.WriteLine("UrlAttribute value: {0}", attribute.UrlValue);
object[] activationAttributes = new object[] { attribute };
// Register the client for the remote object.
RemotingConfiguration.RegisterActivatedClientType(
typeof(RemoteObject),
"tcp://localhost:1234/RemoteApp");
// Activate the remote object.
Console.WriteLine("Activating remote object.");
RemoteObject obj = (RemoteObject) Activator.CreateInstance(
typeof(RemoteObject), null, activationAttributes);
// Invoke a method on the remote object.
Console.WriteLine("Invoking Hello() on remote object.");
obj.Hello();
// Inform the user that the program is exiting.
Console.WriteLine("The client is exiting.");
}
}
下面的代码示例演示此客户端的服务器:
#using <System.Runtime.Remoting.dll>
#using <System.dll>
#using "RemoteObject.dll"
using namespace System;
using namespace System::Runtime::Remoting;
using namespace System::Runtime::Remoting::Channels;
using namespace System::Runtime::Remoting::Channels::Tcp;
[STAThread]
int main()
{
// Report status to user.
Console::WriteLine( "Server starting." );
// Register the TCP channel.
ChannelServices::RegisterChannel( gcnew TcpChannel( 1234 ) );
// Set application name.
RemotingConfiguration::ApplicationName = "RemoteApp";
// Register object for client activated remoting.
RemotingConfiguration::RegisterActivatedServiceType( RemoteObject::typeid );
// Wait until termination.
Console::WriteLine( "Press enter to end." );
Console::ReadLine();
Console::WriteLine( "Terminating server." );
}
using System;
using System.Runtime.Remoting;
using System.Runtime.Remoting.Channels;
using System.Runtime.Remoting.Channels.Tcp;
public class Server
{
[STAThread]
public static void Main()
{
// Report the status to the user.
Console.WriteLine("Starting server.");
// Register the TCP channel.
ChannelServices.RegisterChannel(new TcpChannel(1234));
// Set the application name.
RemotingConfiguration.ApplicationName = "RemoteApp";
// Register the object for remoting.
RemotingConfiguration.RegisterActivatedServiceType(
typeof(RemoteObject));
// Wait until the user presses ENTER.
Console.WriteLine("Press ENTER to exit.");
Console.ReadLine();
Console.WriteLine("The server is exiting.");
}
}
下面的代码示例演示客户端和服务器使用的远程对象:
using namespace System;
using namespace System::Security;
using namespace System::Security::Permissions;
[assembly:AllowPartiallyTrustedCallersAttribute];
public ref class RemoteObject: public MarshalByRefObject
{
public:
RemoteObject()
{
// Report object construction to server's console.
Console::WriteLine( "You have called the constructor." );
}
void Hello()
{
// Report method invocation to server's console.
Console::WriteLine( "You have called Hello()." );
}
};
using System;
using System.Security;
using System.Security.Permissions;
public class RemoteObject : MarshalByRefObject
{
public RemoteObject()
{
Console.WriteLine("You have called the constructor.");
}
public void Hello()
{
Console.WriteLine("You have called Hello().");
}
}
注解
使用该方法创建激活对象时,该 UrlAttribute 数组作为参数 Activator.CreateInstance 传入激活 CreateInstance 属性数组。
有关使用属性的详细信息,请参阅 “属性”。
构造函数
UrlAttribute(String) |
创建 UrlAttribute 类的新实例。 |
字段
AttributeName |
此 API 支持产品基础结构,不能在代码中直接使用。 指示上下文特性的名称。 (继承自 ContextAttribute) |
属性
Name |
此 API 支持产品基础结构,不能在代码中直接使用。 获取上下文特性的名称。 (继承自 ContextAttribute) |
TypeId |
在派生类中实现时,获取此 Attribute 的唯一标识符。 (继承自 Attribute) |
UrlValue |
获取 UrlAttribute 的 URL 值。 |
方法
Equals(Object) |
检查指定对象是否与当前实例引用相同的 URL。 |
Freeze(Context) |
此 API 支持产品基础结构,不能在代码中直接使用。 当上下文冻结时调用。 (继承自 ContextAttribute) |
GetHashCode() |
返回当前 UrlAttribute 的哈希值。 |
GetPropertiesForNewContext(IConstructionCallMessage) |
强制在指定 URL 处的上下文内创建上下文和服务器对象。 |
GetType() |
获取当前实例的 Type。 (继承自 Object) |
IsContextOK(Context, IConstructionCallMessage) |
返回一个布尔值,该值指示指定的 Context 是否满足 UrlAttribute 的要求。 |
IsDefaultAttribute() |
在派生类中重写时,指示此实例的值是否是派生类的默认值。 (继承自 Attribute) |
IsNewContextOK(Context) |
此 API 支持产品基础结构,不能在代码中直接使用。 返回一个指示上下文属性是否与新上下文兼容的布尔值。 (继承自 ContextAttribute) |
Match(Object) |
当在派生类中重写时,返回一个指示此实例是否等于指定对象的值。 (继承自 Attribute) |
MemberwiseClone() |
创建当前 Object 的浅表副本。 (继承自 Object) |
ToString() |
返回表示当前对象的字符串。 (继承自 Object) |
显式接口实现
_Attribute.GetIDsOfNames(Guid, IntPtr, UInt32, UInt32, IntPtr) |
将一组名称映射为对应的一组调度标识符。 (继承自 Attribute) |
_Attribute.GetTypeInfo(UInt32, UInt32, IntPtr) |
检索对象的类型信息,然后可以使用该信息获取接口的类型信息。 (继承自 Attribute) |
_Attribute.GetTypeInfoCount(UInt32) |
检索对象提供的类型信息接口的数量(0 或 1)。 (继承自 Attribute) |
_Attribute.Invoke(UInt32, Guid, UInt32, Int16, IntPtr, IntPtr, IntPtr, IntPtr) |
提供对某一对象公开的属性和方法的访问。 (继承自 Attribute) |