public class DemoSink : IMessageSink
{
private IMessageSink m_NextSink;
public DemoSink(IMessageSink nextSink)
{
m_NextSink = nextSink;
}

IMessageSink 成员#region IMessageSink 成员
public IMessageCtrl AsyncProcessMessage(IMessage msg, IMessageSink replySink)
{
throw new NotImplementedException();
}
public IMessageSink NextSink
{
get
{ return m_NextSink; }
}
public IMessage SyncProcessMessage(IMessage msg)
{
IMethodMessage message = msg as IMethodMessage;
Type type = Type.GetType(message.TypeName);
string text = type.Name + "." + message.MethodName;
Debug.WriteLine(text);
foreach (object obj in message.Args)
{
Debug.WriteLine(obj.ToString());
}
IMethodReturnMessage returnMessage = (IMethodReturnMessage)m_NextSink.SyncProcessMessage(msg);
Debug.WriteLine(returnMessage.ReturnValue.ToString());
return returnMessage;
}
#endregion
}
[AttributeUsage(AttributeTargets.Class)]
public class DemoContextAttribute : ContextAttribute
{
public DemoContextAttribute()
: base("DemoContextAttribute")
{
}
public override void GetPropertiesForNewContext(IConstructionCallMessage ctorMsg)
{
DemoProperty proerty = new DemoProperty();
ctorMsg.ContextProperties.Add(proerty);
}
public override bool IsContextOK(Context ctx, IConstructionCallMessage ctorMsg)
{
DemoProperty property = ctx.GetProperty("DemoTest") as DemoProperty;
if (property == null) return false;
else return true;
}
}
public class DemoProperty : IContextProperty, IContributeServerContextSink
{
public DemoProperty()
{
}

IContextProperty 成员#region IContextProperty 成员
public void Freeze(Context newContext)
{
}
public bool IsNewContextOK(Context newCtx)
{
DemoProperty property = newCtx.GetProperty("DemoTest") as DemoProperty;
if (property == null) return false;
else return true;
}
public string Name
{
get
{ return "DemoTest"; }
}
#endregion


IContributeServerContextSink 成员#region IContributeServerContextSink 成员
public IMessageSink GetServerContextSink(IMessageSink nextSink)
{
IMessageSink sink = new DemoSink(nextSink);
return sink;
}
#endregion
}来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/12639172/viewspace-280858/ ,如需转载,请注明出处,否则将追究法律责任。