Почему TLB, сгенерированный из сборки C#, строчит начальный символ некоторых имен свойств?
Это странно:
У меня есть интерфейс на языке Си#:
[ComVisible(true)] [Guid("24BDD90E-373B-400F-B374-1350CDB9FE76")] [InterfaceType(ComInterfaceType.InterfaceIsDual)] public interface IGURecord { [DispId(1)] string Id { get; } [DispId(2)] double GUValue { get; } [DispId(3)] double RelativeMigrationTime { get; } [DispId(4)] string GlycanName { get; } [DispId(5)] double MonoisotopicMass { get; } }
В сгенерированном .TLB свойства GUValue, RelativeMigrationTime и GlycanName получают начальные символы в нижнем регистре:
interface IGURecord : IDispatch { [id(0x00000001), propget] HRESULT Id([out, retval] BSTR* pRetVal); [id(0x00000002), propget] HRESULT guValue([out, retval] double* pRetVal); [id(0x00000003), propget] HRESULT relativeMigrationTime([out, retval] double* pRetVal); [id(0x00000004), propget] HRESULT glycanName([out, retval] BSTR* pRetVal); [id(0x00000005), propget] HRESULT MonoisotopicMass([out, retval] double* pRetVal); };
Есть ли у кого-нибудь идеи о том, почему это может произойти?
Что я уже пробовал:
В этой сборке C# нет ничего необычного.
Это против 2013 года.
Я проверил "Register for COM interop" в настройках сборки проекта.
В этой сборке есть и другие интерфейсы, определенные аналогичным образом, которые не видят этой проблемы.