Laden...

Forenbeiträge von serial Ingesamt 902 Beiträge

10.12.2010 - 11:44 Uhr

Hallo,

was genau willst du denn an dem Repository testen, wenn nicht die funktionalität? (Ich meine, wenn du dein DB Repository testen willst, wäre es ja nicht sinnvoll, die DB aussen vor zulassen).

mfg
serial

10.12.2010 - 11:38 Uhr

Hallo,

du könntest von der Formsanwendung einen Webrequest an deine Seite schicken, und die Koordinaten zB als QUerystring-Parameter mitgeben, welche deine Webapplication auswerten muss.

Das wäre der direkte Aufruf, du könntest aber auch mit einer DB arbeiten, wo die Formsanwendung die Daten speichert, und deine Seite diese ausließt, oder ein File (nur wenn das Formsprogramm auf dem Server läuft).

mfg
serial

08.12.2010 - 15:15 Uhr

Hallo,

StartProcess ruft der CLient auf, nciht der Host.
Der Host hostet deinen Service.

Wie gesagt, schau dir einfach mal ein beliebiges WCF Tutorial an, da wird dies beschrieben.

mfg
serial

07.12.2010 - 16:25 Uhr

HAllo,

irgendwie hab ich das gefühl, du solltest mal ein par wcf tutorials durcharbeiten.
Und ich verstehe nicht wieso du unbedingt nen extra thread starten willst....das ist eigentlich unnötig.

mfg
serial

07.12.2010 - 16:02 Uhr

Der Host startet ja deinen Service.
Vom Client kannst du dann MEthoden auf diesem Aufrufen.
Der Service kann mit dem Client per Cllbacks kommunizieren, und darüber könntest du das schließen anfordern.

mfg
serial

07.12.2010 - 15:51 Uhr

Hallo,

du könntest es mit einer Abbruchvariable lösen, welche du in deinen Threads abfragst.

mfg
serial

07.12.2010 - 15:50 Uhr

Die Instanz wird AFAIK erst erstellt sobald sich der Client verbindet.
Der Unterschied zwischen den einzelnen Moden ist dass er die erstellte Instanz wiederverwendet oder eben nicht.

Gruss
Michael

Bei Mode Single wird die Instanz erstellt wenn der Host startet.

Sonst ist das, was michlg schreibt richtig.
Was genau willst du denn machen?

mfg
serial

07.12.2010 - 14:39 Uhr

OK, ich hab das Problem gelöst.
Die Beispiele in der MSDN sind teilweise irreführend, da das TransactionFlow auf Servicelevel angewendet wird.

Da ChannelFactory zur Erzeugung die Serviceinterfaces befragt, und danach seine konfiguration vornimmt, kann er bei den meisten Beispiel den FLuss nicht erkennen.
Einfache abhilfe ist hier, das TransactionFlow-Attribut auf Interfaceebene anzuwenden, und nicht auf der Implementierungsebene.

mfg
serial

07.12.2010 - 14:35 Uhr

ich möchte da keine Exception werfen, sondern ich wollte dort möglichst viele Exception global verarbeiten. Deswegen die Frage, wohin das Proramm danach springt.

in deinem beispiel wirfst du aber die exception.
Wenn du sie behandeln willst, dann mach es dort, statt sie weiter zu werfen.

Weiter oben gibt es, wie schon gesagt, nur noch die Umgebung, also würde wahrscheinlich das programm abstürzen.

mfg
serial

07.12.2010 - 12:05 Uhr

HAllo,

ProcessStartInfo dürfte Dir helfen.

mfg
serial

07.12.2010 - 11:52 Uhr

Hallo,

Hier habe ich ein Beispiel gepostet.

mfg
serial

07.12.2010 - 11:49 Uhr

Hallo,

soweit ich weiss sind diese funktionen auf serverseite umzusetzen, also durch einsatz spezieller kataloge, optionen und dann mit den entsprechenden selects auszuführen.

Wir setzen sowas über storedprocedures um.

mfg
serial

07.12.2010 - 10:15 Uhr

HAllo,

erzeuge deine Controls im Init, alles andere ist zu spät.
Halte dir auch referenzen in deinem control/page, somit kannst du bei Postbacks darauf zugreifen, auch auf die neuen werte.

Für die Backcoler haben die Controls enstprechende Eigenschaften.
Was hast du für die Validationcontrols gesucht?Diese sind eigentlich relativ einfach zu benutzen, du musst da nix selbst machen (ausser du schreibst einen CustomValidator).

mfg
serial

07.12.2010 - 10:09 Uhr

Hallo,

und was ist wenn die Module zukünftig weiter Sachen dem Hauptfenster hinzufügen müssten? Wenn das Hauptfenster die Sache erlefigt, müsste man dies ständig anpassen.
Auch müsste ich jedesmal das Presenter/View-Interface anpassen um die neuen Eigenschaften zur Verfügung zu stellen, nix von OPen/Closed Prinzip.

Aber natürlich sollte man das Hauptformular durch ein Interface entkoppeln.
Aber ok, hier muss man sich wohl zwischen koppelung bzw flexibilität entscheiden.

mfg
serial

07.12.2010 - 10:00 Uhr

"Tell, dont ask" ...

ich meinte nicht das ausführen der aktion, sondern das erstellen der der entsprechenden menüeinträge.
Das die aktionen durch den host ausgeführt werden müssen, ist natürlich klar.

mfg
serial

07.12.2010 - 09:59 Uhr

Hallo David,

wird die Tabelle durch Daten erstellt? Dann solltest du ein DataGridView oder Repeater verwenden, dieser hat entsprechende Ereignisse und Methoden um auf die Controls zuzugreifen.

Mit normaler tabelle würde auch das gehen:


 Table t;
        protected override void OnInit(EventArgs e)
        {
            base.OnInit(e);
            t = new Table();
            for (int i = 0; i < 5; i++)
            {
                TableRow row = new TableRow();
                TableCell c = new TableCell();

                TextBox b = new TextBox();
                c.Controls.Add(b);
                row.Cells.Add(c);
                t.Rows.Add(row);
                
            }
            
        }
        protected void Page_Load(object sender, EventArgs e)
        {
            ctls.Controls.Add(t);

        }

        protected void Button1_Click(object sender, EventArgs e)
        {
            foreach (TableRow row in t.Rows)
            {
                TextBox b = (TextBox)row.Cells[0].Controls[0];
                Response.Write(b.Text);
            }
        }

mfg
serial

07.12.2010 - 09:55 Uhr

Hallo,

wie gesagt, zum nächsten Exceptionhandler, sollte es keinen mehr geben, fliegt dir der fehler um die ohren =)

mfg
serial

07.12.2010 - 09:54 Uhr

Hallo,

du könntest dir auch das MVP Muster mit einem Application-Controller anschauen.
Hier könnte der Presenter eines jeden Forms in die Hauptanwendung selbst Sachen eintragen (Tell, dont ask).

Ein gutes Beispiel dazu: Muster in der Praxis: Das Offen-Geschlossen-Prinzip

mfg
serial

07.12.2010 - 09:47 Uhr

Hallo,

der Fehler wird weiter nach oben zum nächten Fehlerhandler gewurfen, wo der Fehler dann weiter behandelt werden kann.
Solltest du einen "normalen" programmfluss anch dem fehler wollen, solltest du dir try-finally anschauen. Wenn du den fehler nciht weiterwirfst, kannst du danach auch weitermachen...wobei das sicherlich kein gutes design ist.

Weiterhin sollte man auch ausnahmen, die im code als ergebnis behandelt werden mit dem special-case object umzubauen, sodass dieses ergebnis im normalen kontext auftritt und nicht in einer exception.

Bei deinem fall sollte man also vielleicht unterscheiden, ob das speichern wegen einer sql-exception fehlgeschlagen ist, oder weil zB businessvalidations nicht enigehalten wurden.

mfg
serial

07.12.2010 - 09:43 Uhr

Vielen Dank für die Antwort,
aber damit kann man schlecht Rechtschreibfehler der eingabe, + und - und so berücksichten.

um eingabefehler zu berücsichtigen wirst du mit einer einfachen suche nicht weit kommen.
Dazu brauchst du techniken des DBMS wie zum beispiel fuzzy search oder volltextsuche nach einer matrix (komm grad net auf den name) wo das ergebnis nach wichtung geordnet wird.

mfg
serial

06.12.2010 - 16:04 Uhr

Ich nochmal,

wenn ich statt ChannelFactory<> einen per svcutil generierten Proxy nutze, funktioniert es.
Ich bräuchte aber die ChannelFactory, und hab kein Ahnung woran es nun liegen könnte.

mfg
serial

06.12.2010 - 15:07 Uhr

Hallo,

ich hab es nun per Config-File versucht, folgende konfiguration:

Server:


<configuration>
    <system.serviceModel>
        <behaviors>
            <serviceBehaviors>
                <behavior name="NewBehavior">
                    <serviceMetadata httpGetEnabled="true" httpGetUrl="http://localhost/meta" />
                </behavior>
            </serviceBehaviors>
        </behaviors>
        <bindings>
            <netTcpBinding>
                <binding name="NewBinding0" transactionFlow="true">
                    <security>
                        <transport>
                            <extendedProtectionPolicy policyEnforcement="Never" />
                        </transport>
                    </security>
                </binding>
            </netTcpBinding>
        </bindings>
        <services>
            <service behaviorConfiguration="NewBehavior" name="ServerConsole.TestService">
                <endpoint address="net.tcp://loclahost:9999" binding="netTcpBinding"
                    bindingConfiguration="NewBinding0" contract="ServerContracts.ITestService" />
            </service>
        </services>
    </system.serviceModel>
</configuration>

ServerHost:


 using (ServiceHost host = new ServiceHost(typeof(TestService)))
            {
                host.Open();
                Console.ReadLine();
            }

Client-Config:


<configuration>
    <system.serviceModel>
        <bindings>
            <netTcpBinding>
                <binding name="NetTcpBinding_ITestService" closeTimeout="00:01:00"
                    openTimeout="00:01:00" receiveTimeout="00:10:00" sendTimeout="00:01:00"
                    transactionFlow="true" transferMode="Buffered" transactionProtocol="OleTransactions"
                    hostNameComparisonMode="StrongWildcard" listenBacklog="10"
                    maxBufferPoolSize="524288" maxBufferSize="65536" maxConnections="10"
                    maxReceivedMessageSize="65536">
                    <readerQuotas maxDepth="32" maxStringContentLength="8192" maxArrayLength="16384"
                        maxBytesPerRead="4096" maxNameTableCharCount="16384" />
                    <reliableSession ordered="true" inactivityTimeout="00:10:00"
                        enabled="false" />
                    <security mode="Transport">
                        <transport clientCredentialType="Windows" protectionLevel="EncryptAndSign">
                            <extendedProtectionPolicy policyEnforcement="Never" />
                        </transport>
                        <message clientCredentialType="Windows" />
                    </security>
                </binding>
            </netTcpBinding>
        </bindings>
        <client>
            <endpoint address="net.tcp://loclahost:9999/" binding="netTcpBinding"
                bindingConfiguration="NetTcpBinding_ITestService" contract="ITestService"
                name="NetTcpBinding_ITestService">
                <identity>
                    <userPrincipalName value="sebastian@ctv.local" />
                </identity>
            </endpoint>
        </client>
    </system.serviceModel>
</configuration>

und Client:


 using (TransactionScope scope = new TransactionScope(TransactionScopeOption.RequiresNew))
            {
                NetTcpBinding binding = new NetTcpBinding("NetTcpBinding_ITestService");
               
                ITestService srvClient = ChannelFactory<ITestService>.CreateChannel(binding, new EndpointAddress("net.tcp://localhost:9999/TestService"));
               
                srvClient.NewUser("User1", "test");
                srvClient.NewUser("User2", "test");

                scope.Complete();
                srvClient.ShutDown();
            }

Und der Service:


 [ServiceContract(SessionMode= SessionMode.Required)]
    public interface ITestService
    {
        [OperationContract(IsInitiating=true)]
        void Open();

        [OperationContract(IsTerminating = false)]
        void NewUser(string name, string pwd);

        [OperationContract(IsTerminating = true)]
        void ShutDown();
    }


//Implementierung
[ServiceBehavior(InstanceContextMode=InstanceContextMode.PerSession)]
    class TestService : ITestService
    {
        #region ITestService Member

        public void Open()
        {
           
        }

        [OperationBehavior(TransactionScopeRequired=true)]
        [TransactionFlow(TransactionFlowOption.Mandatory)]
        public void NewUser(string name, string pwd)
        {
            throw new NotImplementedException();
        }

        public void ShutDown()
        {
           
        }

        #endregion
    }

Beim Client kommt immernoch die Meldung, das Transaktionsfluss aktiviert sein muss....=(

was mach ich nur falsch?

mfg
serial

06.12.2010 - 09:44 Uhr

ich push das nochmal, da ich die konfiguration im code brauche und nicht per xml, und das problem immernoch besteht. 😦

mfg
serial

03.12.2010 - 13:43 Uhr

Hallo,

ich habe nen relativ einfachen Service:


[ServiceContract(SessionMode= SessionMode.Required)]
    public interface ITestService
    {
        [OperationContract(IsOneWay = true)]
        void OneWayMethode(string methodBase);

        [OperationContract(IsInitiating=false)]
        void Add(int i);

        [OperationContract(IsInitiating=true)]
        void AddTrans(int i);

        [OperationContract(IsTerminating=true)]
        int Result();
    }

 //Implementierung
[ServiceBehavior(InstanceContextMode=InstanceContextMode.PerSession)]
    class TestService:ITestService
    {
        int i = 0;
        #region ITestService Member

        public TestService()
        {
           
        }

        public void OneWayMethode(string methodBase)
        {
            //methodBase += "Server";
            //IServiceCallback cb = OperationContext.Current.GetCallbackChannel<IServiceCallback>();
            //cb.FirstCallbackMethode(methodBase);
        }

        [OperationBehavior(TransactionScopeRequired = true)]
        [TransactionFlow(TransactionFlowOption.Mandatory)]
        public void Add(int i)
        {
            this.i += i;
        }

        [OperationBehavior(TransactionScopeRequired = false)]
        [TransactionFlow(TransactionFlowOption.Allowed)]
        public void AddTrans(int i)
        {
            this.i += i;
        }

        [OperationBehavior(TransactionScopeRequired = true)]
        [TransactionFlow(TransactionFlowOption.Mandatory)]
        public int Result()
        {
            return this.i;
        }

        #endregion

    }

der Host, konfiguration programatisch.


 using (ServiceHost host = new ServiceHost(typeof(TestService), new Uri("net.tcp://localhost:9999")))
            {
                NetTcpBinding binding = new NetTcpBinding();
                binding.TransactionFlow = true;
                host.AddServiceEndpoint(typeof(ITestService), binding, "TestService");
                host.Open();

                Console.ReadLine();
            }

und der testclient


NetTcpBinding binding = new NetTcpBinding();
            binding.TransactionFlow = true;
            binding.TransactionProtocol = TransactionProtocol.OleTransactions;
           
            ITestService srvClient = ChannelFactory<ITestService>.CreateChannel(binding, new EndpointAddress("net.tcp://localhost:9999/TestService"));
            
            using (TransactionScope scope = new TransactionScope(TransactionScopeOption.RequiresNew))
            {
               
                srvClient.AddTrans(10);
                srvClient.AddTrans(10);
                srvClient.AddTrans(5);
            }

Problem ist, dass er sagt, dass die Bindung TransaktionsFluss erlauben soll....macht sie das denn nicht nach setzen der Eigenschaft?

Ich sehe sicherlich nur den wald vor lauter bäumen nciht.
Ich hoffe ihr könnt mit den blick wieder klarer machen. Danke

mfg
serial

02.12.2010 - 21:46 Uhr

Hallo,

es gibt verschiedene möglichkeiten.
Stichworte sind WCF, Remoting.

mfg
serial

30.11.2010 - 15:25 Uhr

Hallo serial,

mit dem Begriff DLinq würde ich aufpassen denn das war die ursprüngliche Bezeichnung von MS für Linq to SQL - nur damit es nicht zu Verwechslungen kommt 😉

mfG Gü

oh das wusste ich garnicht.
Also ich meine die DynamicQuery-Erweiterungen für Linq =)

mfg
serial

30.11.2010 - 14:14 Uhr

Hallo,

bist du dir sicher, das jeder nutzer sich selbst tabellen anlegen kann?Das halte ich für nicht sehr sinnvoll.
Weiterhin solltest du dir erstmal LinqToSql anschauen, und danach DynamicLinq.
DLinq ist für den Einsatz in zB verteilten Szenarien gedacht, wo man nicht einfach ExpressionTrees über die Leitung (also zB den Where-Ausdruck) vom Client zum Server serialisieren kann. Dafür eignet sich DLinq, da man dieses Ausdruck als string repräsentieren kann.

mfg
serial

30.11.2010 - 12:07 Uhr

die Doku von File.Move sagt allerdings:

Diese Methode funktioniert über Laufwerke hinweg

genau darum hatte ich gefragt., dachte er meint vielleicht was anderes.

mfg
serial

30.11.2010 - 12:02 Uhr

Hallo,

was meinst du mit stammverzeichnis?

mfg
serial

29.11.2010 - 16:19 Uhr

HAllo,

leider kann ich mir niocht genau vorstellen was du vorhast, kannst du uns mal ein beispiel geben?

mfg
serial

26.11.2010 - 17:04 Uhr

Hallo,

mich würde interessieren, welche DI-Container ihr so benutzt, und warum.
Solltet ihr mehrere Container benutzen, schreibt bitte welche es sind, und in welchen Fällen entscheidet ihr euch für den einen oder den anderen?

Solltet ihr einen ganz anderen als in der Liste vorhandenen einsetzen, interessiert mich, welcher es ist.

Interesse habe ich auch an euren Meinungen bzw Vor-und Nachteilen der/des von euch eingesetzen DI-Container/s.

mfg
serial

25.11.2010 - 14:26 Uhr

HAllo,

dann lass dein UserControl1 ein Event anbieten, welches gefeuert wird, wenn der Button geklickt wird, dein Hauptform abboniert dieses, und ruft im Handler die Methode des UserControl2 auf.

[Edit] du kannst dir auch mal das MVP Muster und den ApplicationFlowController anschauen.

mfg
serial

25.11.2010 - 10:53 Uhr

und
Delimiter.Replace("\", @"&quot;);
funktioniert nicht, im ist zwar klar, dass zwei \ im String enthalten sind löscht/ersetzt aber keinen....

Strign ist immutable, d.h du musst natürlich eine neue Zuweisung machen, wie herbivore in seinem beispiel ja zeigt.

Und du wirst wohl dann nicht drumrum kommen, für deine Fälle das entsprechende Replace zu machen.
Du kannst ja eine Liste mit allen Sonderzeichen halten, und ein Contains auf die Liste machen.

mfg
serial

24.11.2010 - 21:56 Uhr

Aber auch da komme ich doch wieder um casts nicht herum? - Wie auch immer, eine ganze Fülle an Lösungsvorschlägen habe ich ja nun, über die ich schlafen kann.

manchmal kommt man einfach nicht um wenigsten einen cast herum, wobei man da wieder generische factories oder microkernel in erwägung ziehen kann.

mfg
serial

24.11.2010 - 21:38 Uhr

HAllo,

so wie es Sarc sagt, meine ich es auch!
Du hast ein Parameterobjekt, wieviele Member dieses hat, ist ja egal.

Für den Host eben nur die IP, für etwas anderes, eben mehr!
Dieser Typ des Parameterobjektes ist dann der Typparameter der generischen Strategyklasse.

mfg
serial

24.11.2010 - 20:48 Uhr

HAllo,

du kannst das Strategyinterface generisch machen, und als Parameter ein Parameterobjekt übergeben, welches durch den generischen Typ angeboten wird.

mfg
serial

24.11.2010 - 20:46 Uhr

@realProg:

nein das ist keine schlechte lösung, das ist TableDataGateway, und mit genau diesem sollst du auch speichern.

Und dazu, wie in meinem beispiel, brauchst du im GUI NICHTS von der Tablestruktur wissen, denn genau DAS macht das Gateway.

mfg
serial

24.11.2010 - 16:42 Uhr

Hallo,

wieso willst du die DataTable clonen?
WIllst du nicht einfach nur einen neuen Eintrag in der Datenbank erzeugen?

Bzw hast du dir mein Beispiel mal angeschaut, da ist genau dein Fall (erzeugen einer neuen DataRow und hinzufügen in die DB) erklärt.

mfg
serial

24.11.2010 - 16:37 Uhr

Um diese Logik bei anderen Oberflächen oder Einsatzgebieten nciht jedesmal neu Implementieren zu müssen!
Wie kommst du darauf das das bei meinem Vorschlag der Fall ist?

das klang für mich danach:

Dann kann ich die Daten aber ja auch direkt an die Datenschicht übergeben und mich dort ums speichern kümmern. Wozu dann eine extra Gateway-Klasse?

Die GUI sollte sich nicht um das speichern kümmern, maximal das speichern anschieben!

[Edit] mein vorgehen sollte auch nur einen standardweg (patterns von fowler) zeigen, die für seinen einsatz von datasets geeeignet sind.

NAtürlich könnte er ActiveRecord, DomainModel und DataMapper (LinqToSql, EF) usw verwenden, ich wollte nur auf seine jetzige technologie eingehen.

mfg
serial

24.11.2010 - 16:23 Uhr

Wozu dann eine extra Gateway-Klasse?

Um diese Logik bei anderen Oberflächen oder Einsatzgebieten nciht jedesmal neu Implementieren zu müssen!

SOC sollte man dennoch immer durchführen.

mfg
serial

24.11.2010 - 16:03 Uhr

@serial: Verstehe irgendwie den Sinn/Nutzen deines Beispiels im Bezug auf die Frage nicht.

Er will neue Einträge aus dem GUI in der DB speichern, genau das macht das TableDataGateway, er muss also NICHT die Struktur der Tabelle kennen, sondern übergibt nur die vom User übermittelten Daten an das Gateway, dieses kümemrt sich um den Rest.
Dies ist ein einfaches Data-PAtternn für so einfache Anwendungsfälle.
Um mehr "Logik" reinzubekommen könnte er ein TableModule drüber legen, oder ein DomainModel verwenden.

Da er aber mit Datenbindung arbeitet, und anscheinend nciht viel Logik hat, reicht dieses hier mMn aus.

24.11.2010 - 15:49 Uhr

HAllo,

schau dir doch mal das Pattern TableDataGateway bzw noch TableModule an.

Hier mal ein einfaches ad hoc beispiel (keine ahnung ob syntaktisch richtig)

Tabledatagateway


public class MyTableGateWay
{
  DataSet _myTableSet;
  string _select = "select * from MyTable";
 public DataSet GetData()
 {
 using(SqlConnection con = new SqlConnection(connString))
 {
  //fill myTableSet
  return myTableSet;
 }
 }

 public void Insert(string value1, string value2)
 {
   DataRow newRow = _myTableSet.Tables[0].NewRow();
   //hier die Werte setzen, kein Reflection notwendig
  _myTableSet.Tables[0].Rows.Add(newRow);
  adapter.Update();
 }
}


Verwendung:


MyTableGateWay gateway = new MyTableGateWay();
myGrid.DataSource = gateway.GetData();

//anhängen
gateway.Insert("Hallo","Welt");

mfg
serial

24.11.2010 - 15:07 Uhr

Hallo,

in welcher FW-Version arbeitest du?
Wenn du die 4 verwendest, solltest du dir mal dynamic anschauen.

Du meinst also ein Interface bzw. eine Basisklasse mit genau dieser einen Methode?

Hier sehe ich das Problem, dass die Klasse auf gewisse Fields und Properties der aufrufenden Klasse zugreifen muss. - Reflection schließe ich hier aus.

da kannst du doch diese Infos als Parameter an deine Strategy (welche auch als Methodenobjekt refaktorisiert werden kann) übergeben!

mfg
serial

24.11.2010 - 13:04 Uhr

Hallo,

also ich kann mir wirklich nur vorstellen, dass du nicht 0.5 übergibst, sondern vielleicht "0.5" oder sowas.
Es müsste sonst funktionieren.
Zeig doch mal den echten Quellcode, und komplette Fehlermeldung.

mfg
serial

23.11.2010 - 21:03 Uhr

Hallo,

indem du ValidationGroups verwendest.
Oder, indem du dem schon genannten link folgst 😉

mfg
serial

23.11.2010 - 20:08 Uhr

HAllo,

für mich hört sich das dennoch, oder gerade jetzt, gut nach dem strategy-muster an!
Lege die Berechnungen in eigene Klassen, wenn diese wirklich relativ gleich sind, macht es nix, wenn du für ähnliche berechnungen für 147 und 145 eine basisstrategy festlegst, und die unterschiedlichen sachen per template-methode umsetzt!

Die konkrete strategy wird dann von der konkreten bewertungssatzklasse benutzt.

mfg
serial

23.11.2010 - 16:41 Uhr

Hallo,

ist die Berehnung abhängig von der Fläche, oder vom Bewertungssatz?
Wenn nach Bewertungssatz (was ich wahrscheinlicher halte), dann könntest du deine Bewertungssatzklasse abstrkt machen, und die Berechnung an abgeleitete Klassen delegieren.

Oder du benutzt eine Strategy in deinem Bewertungssatz, was ich aber vielleicht für nicht ganz so sinnvoll halte.

Kannst du vielleicht mal ein kleines "Berechnungsbeispiel" geben?

mfg
serial

22.11.2010 - 16:51 Uhr

Hallo,

hat hier noch jemand eine idee?

mfg
serial

19.11.2010 - 15:41 Uhr

HAllo,

@gfoidl: da hätte ich auch selbst drauf kommen können! Diesen einfach auf unidirektional stellen...naja, manchmal sieht man den wald vor lauter bäumen nicht.
[Edit] nein funktioniert natürlich auch nicht, da ja die Role trotzdem zwischen den beiden aufrufen 2 mal attached wird. Hm...=( sonst noch eine idee?

mfg
serial

19.11.2010 - 11:32 Uhr

Hallo,

oh das kannte ich noch nicht!
Unabhängig davon, würde es mich dennoch interessieren, ob es auch ohne dieses funktioniert!

mfg
serial