You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
I propose to add the "Multipart/form-data" serializer; this is just an example to make it clear what I am suggesting.
API Proposal
using System;
using System.Collections.Concurrent;
using System.Reflection;
using var client = new HttpClient();
//var form = new MultipartFormDataContent();
var obj = new MultipartContentSerialization();
var multiForm = obj.Serialization(new Info() { FirstName = "12345", LastName = "12345", Hash = "hash" });
client.PostAsync("https://google.com/test", multiForm).GetAwaiter().GetResult();
class MultipartContentSerialization
{
public MultipartFormDataContent Serialization<T>(T obj)
{
var form = new MultipartFormDataContent();
var property = obj.GetType()
.GetProperties(BindingFlags.Public | BindingFlags.Instance);
foreach (var item in property)
{
object propertyObj = item.GetValue(obj);
var result = item.GetCustomAttribute<NamePropertyMultiformAttribute>();
if (propertyObj is string res)
{
if (result is null)
form.Add(new StringContent(res), item.Name);
else
form.Add(new StringContent(res), result.Name);
}
else
{
throw new Exception("This type is not support");
}
}
return form;
}
}
class NamePropertyMultiformAttribute(string name) : Attribute
{
public string Name => name;
}
class Info
{
public required string FirstName { set; get; }
public required string LastName { set; get; }
[NamePropertyMultiformAttribute("User Id")]
public required string Hash { set; get; }
}
API Usage
Alternative Designs
No response
Risks
No response
The text was updated successfully, but these errors were encountered:
Any API that uses reflection is probably not a good one. It’s slow and not trimming/AOT safe.
Well, I'm not suggesting using reflection for this, it's just an example. I suggest using IL generation and similar approaches. I'm not sure what System.Text.Json uses, but it's quite fast
In that case, your API proposal is wrongly written. You don't need to provide working code, just the API "shape"; You only need to explain what it does. As is, your proposal reads like reflection would be required.
Background and motivation
I propose to add the "Multipart/form-data" serializer; this is just an example to make it clear what I am suggesting.
API Proposal
API Usage
Alternative Designs
No response
Risks
No response
The text was updated successfully, but these errors were encountered: