Zurück tutorials.de > Home

 
 
Hallo und herzlich willkommen! Tutorials.de ist eine Hilfe-Community mit dem Motto User helfen Usern. Als Gast verfügst Du über Schreibrechte in unseren Foren und Blogs. Du kannst dich aber gerne auch kostenlos registrieren und Teil unserer Gemeinschaft werden! Viel Spaß & Erfolg bei der Vermehrung deines Wissens :-)

Themen: 242.975 | Beiträge: 1.352.293 | Mitglieder: 169.418 (Stand 28.01.10) | Fragen zur Nutzung von Tutorials.de? Nutzungsregeln | Kontaktformular | Impressum

Jubiläums-Countdown 23.02 23.03 23.04 23.05 23.06 23.07 23.08 23.09


4 kostenlose Bücher bei unserer Buch-Verschenkaktion 03/2010
Einzelnen Beitrag anzeigen
 
Alt 11.07.06, 20:19   #1 (permalink)
 
Benutzerbild von Thomas Darimont tutorials.de Administrator 
 
Registriert seit: Jun 2002
Ort: Saarbrücken (Saarland)
Beiträge: 9.164
Renommee-Modifikator: 61
Thomas Darimont hat eine strahlende ZukunftThomas Darimont hat eine strahlende ZukunftThomas Darimont hat eine strahlende ZukunftThomas Darimont hat eine strahlende ZukunftThomas Darimont hat eine strahlende ZukunftThomas Darimont hat eine strahlende ZukunftThomas Darimont hat eine strahlende ZukunftThomas Darimont hat eine strahlende Zukunft

Dynamic Proxy unter .Net

Hallo!

Hier mal ein kleines Beispiel wie man unter .Net Dynamic Proxies in C# erzeugen kann:

csharp Code:
  1.  
  2.  
  3.  
  4.  
  5.  
  6.  
  7.  
  8.  
  9.  
  10.  
  11.  
  12.  
  13.  
  14.  
  15.  
  16.  
  17.  
  18.  
  19.  
  20.  
  21.  
  22.  
  23.  
  24.  
  25.  
  26.  
  27.  
  28.  
  29.  
  30.  
  31.  
  32.  
  33.  
  34.  
  35.  
  36.  
  37.  
  38.  
  39.  
  40.  
  41.  
  42.  
  43.  
  44.  
  45.  
  46.  
  47.  
  48.  
  49.  
  50.  
  51.  
  52.  
  53.  
  54.  
  55.  
  56.  
  57.  
  58.  
  59.  
  60.  
  61.  
  62.  
  63.  
  64.  
  65.  
  66.  
  67.  
  68.  
  69.  
  70.  
using System;
using System.Collections.Generic;
using System.Text;
using RealProxy = System.Runtime.Remoting.Proxies.RealProxy;
using IMessage = System.Runtime.Remoting.Messaging.IMessage;
using ReturnMessage = System.Runtime.Remoting.Messaging.ReturnMessage;
using IMethodCallMessage = System.Runtime.Remoting.Messaging.IMethodCallMessage;
using TargetInvocationException = System.Reflection.TargetInvocationException;
 
namespace De.Tutorials.Training
{
    class DynamicProxyExample
    {
 
 
        public static void Main(string[] args)
        {
            IBusinessService businessService = new SimpleProxy(typeof(IBusinessService), new BusinessServiceImpl()).GetTransparentProxy() as IBusinessService;
            Console.WriteLine(businessService.BusinessOperation("Proxy"));
        }
    }
 
    class SimpleProxy : RealProxy
    {
 
        object target;
 
        public SimpleProxy(Type type, object target)
            : base(type)
        {
            this.target = target;
        }
 
        public override IMessage Invoke(IMessage message)
        {
            IMethodCallMessage methodCallMessage = (IMethodCallMessage)message;
            try
            {
                Console.WriteLine("Before: " + methodCallMessage.MethodName);
 
                object result = target.GetType().GetMethod(methodCallMessage.MethodName, (Type[])methodCallMessage.MethodSignature).Invoke(target, methodCallMessage.InArgs);
 
                Console.WriteLine("After: " + methodCallMessage.MethodName);
 
                return new ReturnMessage(result, null, 0, methodCallMessage.LogicalCallContext, methodCallMessage);
            }
            catch (TargetInvocationException targetInvocationException)
            {
                return new ReturnMessage(targetInvocationException, methodCallMessage);
            }
 
        }
    }
 
    interface IBusinessService
    {
        string BusinessOperation(string args);
    }
 
    class BusinessServiceImpl
        : IBusinessService
    {
        public string BusinessOperation(string args)
        {
            Console.WriteLine("Hallo " + args);
 
            return args;
        }
    }
}

Ausgabe:
Code:
Before: BusinessOperation
Hallo Proxy
After: BusinessOperation
Proxy
Gruß Tom
__________________
Java rocks!
How to become a good Java Programmer?
Does IT in Java and .Net
The only valid measurement of code quality: WTFs / minute
Blog
Xing
Twitter
  Thomas Darimont ist gerade online  
 
» Tools
 
tutorials.de-Tools tutorial.de-Suchfeld tutorial.de-Widget tutorial.de-RSS-Feed tutorial.de-Banner
» Neue Links
 
Hits: 134
»
JHT's Planetary...
(Cinema 4D-Objekte)
Hits: 261
»
Tageslicht ohne GI
(Cinema 4D-Tutorials)
Hits: 149
»
Puzzle
(Cinema 4D-Tutorials)
Hits: 100
»
Lacreme
(Cinema 4D-Tutorials)
Hits: 190
»
Liquid Light
(Cinema 4D-Tutorials)
» Aktuelle Umfrage
 
Bist du mit der Geschwindigkeit der Tutorials.de-Website zufrieden?
Ja, es putzt mir glatt den Staub vom Bildschirm! - 79,79%
150 Stimmen
Nein, ich denke da muss noch nachgebessert werden... - 20,21%
38 Stimmen
Stimmen gesamt: 188
Du darfst bei dieser Umfrage nicht abstimmen.

 

Alle Zeitangaben in WEZ +1. Es ist jetzt 22:40 Uhr.


Powered by vBulletin® Version 3.8.5 (Deutsch) & vBadvanced CMPS v.3.2.0
Copyright ©2000 - 2010, Jelsoft Enterprises Ltd.
Alle Rechte vorbehalten ©2000 - 2010 tutorials.de
Design by Mark, CSS by Maik & Sven Mintel
Seite generiert in 0,27661 Sekunden mit 24 queries