Biorąc trochę kodu:Jak zezwolić na niejawną konwersję?
class Json
{
}
class Program
{
static void Main(string[] args)
{
}
Json MyAction()
{
return "{\"json\": 1}";
}
}
czy jest coś mogę dodać do klasy Json
aby to skompilować? Coś, co pozwala kompilatorowi wiedzieć, że może niejawnie rzucić strunę do Jsona?
bym dodać '.ToJson()' metodę rozszerzenia zamiast przeciążenia operatora 'implicit' ponieważ tego rodzaju niejawna konwersja jest niezgodny kilka ważnych wskazówek (patrz odpowiedź na Saeed). W szczególności może rzutować, nie jest bezstratny i ma dziwną semantykę w porównaniach. – CodesInChaos
@CodeInChaos: Mogę sprawić, żeby nie było rzucać :) Moim największym zmartwieniem jest to, że akcja po prostu zwraca inny typ, aby odróżnić go od ciągu, nawet jeśli w przeciwnym razie może działać idealnie jak ciąg. W ten sposób wiem, który ContentType ustawić, a użytkownik nie musi wykonywać dodatkowej pracy (wystarczy odpowiednio ustawić typ zwracanej funkcji). – mpen