Lehetséges ez C#-ban? Ha igen, akkor hogyan?
Van két osztály, aminek két ugyanolyan szignatúrájú metódusa van, de nincs közös interfaceük. (nem készíthető közös interface, nem tudok beleszólni ezen osztályok forráskódjába).
Például:
Class1-nek van MetodusVagyok()
Class2-nek szintén MetodusVagyok()
Van egy saját osztályom, mely használja ezt a két metódust, ezt szeretném unit tesztelni. Kérdés, hogy tudom-e valahogy dinamikusan átadni ezeket a típusokat TestCase-ben és később mockoláshoz felhasználni. Generikusokkal is akár. Eddig amivel próbálkoztam és nem nagyon megy:
[Test]
[TestCase(typeof(Class1))]
[TestCase(typeof(Class2))]
public void TestMethod(Type type){
var mocked = new Mock<typeof(type)>();
mocked.SetUp(x => x.MetodusVagyok().....
Valószínűleg béna vagyok generikusokkal vagy a Type-al és nem tudom őket rendesen használni. Generikusokkal még szebb lenne. Kérdésem, hogy ez lehetséges-e és ha igen, akkor hogyan lehetne megoldani?





Bár nem vagyok otthon már OOP-ben (régen használtam, most beágy-rendszer C-ben amit használok), én így oldanám meg (még ha nem is szép megoldás):
-Megjegyzem, hogy ne kössetek bele, hogy rémes-e, most csak egy ötletet mondok, aminek működnie kell, a szebb megoldásokat kommentelhetitek bátran :)
Szóval, remélem public class-ok, különben nem működik az ötletem :(
Létrehoznék egy MyClass1 osztályt, ami leszármazik a Class1-ből (konstruktorban szimplán ősnek a konstruktora), ugyanígy Class2-nek MyClass2-t.
Na most ezek csak csomagolónak működnének, mert azt mondtad, enm férsz hozzá, zárt library. Ezek a MyX osztályok pedig megvalósítanának egy interfészt, amiben megadod a függvényt.
Ezt az interfészt már tudod listában vagy akármiben tárolni, kezelni, és így meg tudnád hívni ugyanazt a függvényt bármelyikre.
És ha minden igaz, a fordító/interpreter (nem tudom már jelenleg hogy működik a .NET) észlelni fogja, hogy amúgy is van az ősosztálynak ilyen függvénye, ezáltal nem is kell újradefiniálnod, hanem az ősosztályé fog működni.
-Persze nyitott vagyok a kritikákra, ha hülyeséget mondtam :)
További kérdések:
Minden jog fenntartva © 2025, www.gyakorikerdesek.hu
GYIK | Szabályzat | Jogi nyilatkozat | Adatvédelem | Cookie beállítások | WebMinute Kft. | Facebook | Kapcsolat: info(kukac)gyakorikerdesek.hu
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!