dima
dima
CC#
Created by dima on 3/18/2024 in #help
Generics question
So guys, I am having a little bit of fun with generics. I need some help though. Lets say I have a class such as this
public abstract class BaseEntity<T>
{
public T Id { get; set; }
}
public abstract class BaseEntity<T>
{
public T Id { get; set; }
}
And I define a Country entity like this
public class Country : BaseEntity<Guid>
{
// Additional properties and methods specific to Country class
}
public class Country : BaseEntity<Guid>
{
// Additional properties and methods specific to Country class
}
Country.Id now is Guid. If I were to implement Currency entity that references Country, I would have to define it like this
public class Currency : BaseEntity<int>
{
public Guid CountryId { get; set; }
}
public class Currency : BaseEntity<int>
{
public Guid CountryId { get; set; }
}
Yada-yada-yada, some changes occur. I have X entities that reference Guid CountryId. Now, I decide its better to make Country have an int Id, so I change it to inherit BaseEntity<int>. I now also have to replicate that change to X other entities that have CountryId as a reference. The question: Is there a way to reference a type to achieve something along these lines:
public class Currency : BaseEntity<int>
{
public typeof(Country.Id) CountryId { get; set; }
}
public class Currency : BaseEntity<int>
{
public typeof(Country.Id) CountryId { get; set; }
}
This way, when I impact the Country.Id type, it's automatically updated everywhere else 🙂 From what I understand, since all of this is known compile-time, there isn't really a reason why I shouldn't be able to do this, no? All help appreciated ^_^
13 replies
CC#
Created by dima on 12/14/2022 in #help
❔ How to do faster HttpClient requests?
I've done a classic HttpClient initialize once and for-loop it and it takes about 0.7s per request, which is fine-ish but due to the size of my array I would really love to get it faster. I'm aware that I may be API-limited, but what would be the best way going about proving that? I've tried having the responses be saved in a concurrent bag, and parallel.foreach-ing my array while creating an httpclient in each iteration. This was far from the best, and I've understood that. My current implementation has a ConcurrentQueue of HttpClients, with a maximum of 100 parallelisations at once. Each thread would dequeue an httpClient, do the request and then enqueue it back. But I'm getting worse results like that. It's approximately 50-60 requests in 40s, which is still roughly 0.7-0.8s per requests. Would this indicate an API limitation, or is my way of optimizing this wrong? Thanks a ton! (It's currently being done in a console-app with .NET 6, just to get proof it works)
7 replies