Laden...

VS 2015 Vorlagen erstellen / Code generieren

Erstellt von elTorito vor 8 Jahren Letzter Beitrag vor 8 Jahren 2.146 Views
elTorito Themenstarter:in
177 Beiträge seit 2009
vor 8 Jahren
VS 2015 Vorlagen erstellen / Code generieren

Hi,

ich hab eine relativ große Anwendung verteilt auf mehrere Projekte, nun ist es mittlerweile recht mühsam wenn ich eine Klasse / Objekt anlegen möchte. Da sich die Basis Struktur überall wiederholt, möchte ich mit einer Vorlage die passenden Dateien samt klassen/Interfaces erstellen.

Ich hatte mal irgendwo gesehen , nannte sich glaube ich ReverseEngineerCodeFirst, wo anhand einer DB Code Dateien für Context, mapping etc generiert wurden mit T4 ? Templates.

Was sind die richtigen Stichpunkte um solche Vorlagen zu erstellen? Project Templates?

Also ich möchte den Namen der Klasse angeben und dann soll automatisch dies/das jenes an Code generiert werden, wo der Name übernommen wird, und hier/da neue Dateien.cs für angelegt werden, die ich später dann mit individueller Logik erweitern kann.

Arbeite aktuell mit VS 2015 Community, wie kann ich dass umsetzen, bzw. wo finde ich den Einstieg.

Vielen Dank

2.298 Beiträge seit 2010
vor 8 Jahren

Für mich klingt dein ganzer Ansatz merkwürdig.

Was spricht gegen einfache Vererbung und zentral abgelegten Assemblies mit den benötigten Klassen?

Alle Klassen die du sowieso Funktional erweitern willst / optional Funktional erweitern willst, sollten sowieso eine Basisklasse haben. Es macht ja keinen Sinn den gleichen Code in 50 Projekten zu haben.

Wissen ist nicht alles. Man muss es auch anwenden können.

PS Fritz!Box API - TR-064 Schnittstelle | PS EventLogManager |

F
10.010 Beiträge seit 2004
vor 8 Jahren

@inflames2k:
Nicht sonderlich merkwürdig.
Ich habe z.b. ein ItemTemplate für ein "PageWithViewModel". Da wird gleich beides angelegt, gekoppelt und vernünftig einsortiert.

@elTorito:

Da sich die Basis Struktur überall wiederholt, möchte ich mit einer Vorlage die passenden Dateien samt klassen/Interfaces erstellen.

T4 benutzt man wenn Dynamische Sachen erzeugt werden müssen, das ist bei dir wohl eher nicht der Fall.
Was du willst sind wohl eher Projekt- oder ItemTemplates
Template ist übrigens die Übersetzung von Vorlage, ließe sich also recht leicht finden.

elTorito Themenstarter:in
177 Beiträge seit 2009
vor 8 Jahren

Hi,

also ich versuch mal zu Beschreiben was ich mache.

Ich habe ein Projekt Models , dort sind einfache Objekte , diese Objekte /Klasse dienen mir als CodeFirst um Änderungen in der SQL DB zu machen. Also z.B. Klasse Car


public partial class Car : IBaseModel
    {
        public Car()
        {
            
        }

        [MaxLength(50)]
        [Key]
        public string CaryCode { get; set; }
        public string CarName { get; set; }
    }

Dann habe ich ein Projekt DataTier, dort befinden sich die EF Migrationen, Repositories, UnitOfWork


 public interface ICarRepository : IRepository<Car>
    {
    }

    public class CarRepository : Repository<Car>, ICarRepository
    {
        public CarRepository(IUnitOfWork unitOfWork)
            : base(unitOfWork)
        {


        }

        public IQueryable<Car> GetAllCars()
        {
            return this.GetAll();
        }
    }

Dann habe ich ein Projekt BusinnesLogic,


public class CarManager : ICarManager
    {
        private IUnitOfWork _unitOfWork;
        private CarRepository _carRepository;

        public CarManager()
        {
            this._unitOfWork = new UnitOfWork(new MyDBContext());
            this._carRepository = new CarRepository(_unitOfWork);

        }

        public IList<Car> GetAllCars()
        {
            return _carRepository.GetAllCars().ToList();
        }
}

Dann habe ich ein Projekt Interfaces, wo ich ein Interface zum Service und ein Interface zum CarManager drin habe.


 public interface ICarService
    {
        void CreateCar(Car car);
        void DeleteCar(Car car);
        void UpdateCar(Car car);
        IList<Car> GetAllCars();

        event Action<Car> UpdateCarData;
    }

    public interface ICarManager
    {
        void CreateCar(Car car);
        void DeleteCar(Car car);
        void UpdateCar(Car car);
        IList<Car> GetAllCars();
    }

Dann habe ich ein Projekt Service


public class CarService : ICarService, ICarManager
    {
}

Dann habe ich noch ein Projekt Service Access , welches den Zugriff auf den CarService bahandelt,...

Und die GUI ...

Wenn ich nun in der GUI eine Liste von Cars brauche, welche ich mit


public async Task<IList<Car>> GetAllCars()
        {
            var objectList = await Task.Run(() => CarServiceProxy.GetAllCars());
            return objectList;
        }

holen würde. Muss ich ja erst alle anderen Sachen erstellen/zur Verfügung stellen, also Repository, Businness Logic, Service Access, Service... bevor ich Cars in der GUI zur verwenden kann. Ist halt bissl Copy/Paste und Objektname / methoden umbennenen ...

Mit Basis Struktur meinte ich alle verfügungen über Basis Operationen CRUD, wird dann um individuelle Logik erweitert.

Also ich suche einen Weg um das abzukürzen, ich geh momentan hin und erstelle mir eine neue Klasse cars.cs, dann Migration zur DB, dann Repository erstellen, Interfaces erstellen, Businness Layer, Service erstellen, .... Schritte sind immer gleich obs nun Car oder House ist.

Wie würde man das üblicherweise machen?

EDIT: Danke Zelle, dann versuch ich mal damit , Template/Vorlage ist klar , wusste aber nicht genau welche Templates, oder ob VS 2015 da ab haus was anbietet. Ich versuch mal mich da durch zu wusseln.

Danke