diff --git a/td/generate/DotnetTlDocumentationGenerator.php b/td/generate/DotnetTlDocumentationGenerator.php index 7e11cc665..fd99c0c42 100644 --- a/td/generate/DotnetTlDocumentationGenerator.php +++ b/td/generate/DotnetTlDocumentationGenerator.php @@ -213,7 +213,7 @@ EOT /// EOT; foreach ($known_fields as $name => $type) { - $full_doc .= '\r\n /// '.$info[$name].""; + $full_doc .= "\r\n /// getParameterName($name, $class_name).'">'.$info[$name].""; } $this->addDocumentation($full_constructor, $full_doc); } diff --git a/td/generate/tl_writer_dotnet.h b/td/generate/tl_writer_dotnet.h index d6f6f3d90..011f4a390 100644 --- a/td/generate/tl_writer_dotnet.h +++ b/td/generate/tl_writer_dotnet.h @@ -527,9 +527,7 @@ class TlWriterDotNet : public TL_writer { return ss.str(); } ss << "{\n"; - ss << " CallFromUnmanaged<" << class_name << "^> res;\n"; - ss << " downcast_call(from, res);\n"; - ss << " return CallFromUnmanagedRes<" << class_name << "^>::res;\n"; + ss << " return DoFromUnmanaged<" << class_name << "^>(from);\n"; ss << "}\n"; } return ss.str(); diff --git a/td/tl/tl_dotnet_object.h b/td/tl/tl_dotnet_object.h index d81420a20..b60f28638 100644 --- a/td/tl/tl_dotnet_object.h +++ b/td/tl/tl_dotnet_object.h @@ -100,30 +100,21 @@ auto CLRCALL FromUnmanaged(td::td_api::object_ptr &from) -> decltype(FromUnma return FromUnmanaged(*from.get()); } -template -ref class CallFromUnmanagedRes { -public: - static property ResT res; -}; - -template -struct CallFromUnmanaged { - template - void operator()(T &val) const { - CallFromUnmanagedRes::res = FromUnmanaged(val); - } -}; +template +inline ResT DoFromUnmanaged(T &from) { + ResT res; + downcast_call(from, [&](auto &from_downcasted) { + res = FromUnmanaged(from_downcasted); + }); + return res; +} inline BaseObject^ FromUnmanaged(td::td_api::Function &from) { - CallFromUnmanaged res; - downcast_call(from, res); - return CallFromUnmanagedRes::res; + return DoFromUnmanaged(from); } inline BaseObject^ FromUnmanaged(td::td_api::Object &from) { - CallFromUnmanaged res; - downcast_call(from, res); - return CallFromUnmanagedRes::res; + return DoFromUnmanaged(from); } // to unmanaged