Ho bisogno di aiuto per quanto riguarda di seguito:
Sto cercando di progettare un'API. Per creare i contratti di seguito sono i due approcci:
Metodo 1:
public class MyController
{
public void MyAction1(Dictionary<string, dynamic> input)
{
//Use input like below
//Read from input dictionary and apply minimal business logic if needed
//And Call CustomDataProvider library with input object itself(DataProvider designed in such a way that it takes Dictionary and used values as procedure input. Dictionary key is same as procedure arguments.)
}
public void MyAction2(Dictionary<string, dynamic> input)
{
//Use input like below
//Read from input dictionary and apply minimal business logic if needed
//And Call CustomDataProvider library with input object itself(DataProvider designed in such a way that it takes Dictionary and used values as procedure input. Dictionary key is same as procedure arguments.)
}
}
In questo caso non è necessario alcun contratto di dati.
Approccio 2:
public class MyController
{
public void MyAction1(MyContractBusinessObject1 input)
{
//Do normal business logic processing using input object and call DBProvider by creating a dictionary from business object
}
public void MyAction2(MyContractBusinessObject2 input)
{
//Do normal business logic processing using input object and call DBProvider by creating a dictionary from business object
}
}
In questo caso avremo diverse business class come contratto per diversi input di azione. Puoi suggerire quale degli approcci sopra è migliore e perché?
Lasciatemi fare un esempio. Supponiamo che le mie azioni stiano facendo il login e la creazione di nuovi account. Nel primo caso l'input sarà
new Dictionary<string, dynamic>{{"Name","myname"},{"Passowrd",'mypassword'}}
e
new Dictionary<string, dynamic>{{"Name","myname"},{"Passowrd",'mypassword'},{"Age",myage},{"otherInfo",myotherinfo}}
ma nell'approccio 2 l'input sarà
class Login{
public string Name{get; set;}
public string Password{get; set;}
}
e
class NewAccount{
public string Name{get; set;}
public string Password{get; set;}
public int Age{get; set;}
public OtherInfo OtherInfo{get; set;}
}