User 13204940 Ответов: 1

Полезная функция visual studio - возможно?


Привет,

Мне было интересно, возможно ли это сделать. динамически изменять краткое описание метода, чтобы помочь с передачей параметров. Давайте возьмем этот код:

public static IGamePacket createPacket(Type packetType, object[] args)
{
        return (IGamePacket)construct(packetType, args);
}

private static object construct(Type packetType, object[] args)
{
        return packetType.GetConstructors()[0].Invoke(args);
}


Этот код используется, например;

PacketRawData rawDataPacket = (PacketRawData)PacketFactory.createPacket(typeof(PacketRawData), new object[] { ??? });


Проблема здесь заключается в том, что каждый производный класс IGamePacket имеет разные параметры для своего конструктора. Это означает, что я должен смотреть на конструктор класса при вводе текста
new object[] { ??? }


Есть ли способ динамически установить сводку IGamePacket, чтобы передаваемые параметры отображались при вводе PacketFactory.createPacket(...)? Было бы приемлемо показать все пакеты и параметры, но еще лучше, если бы он мог использовать packetType для получения параметров этого конкретного класса.

Это простой пример того, что я хочу, чтобы произошло:

/// <summary>
/// 
/// </summary>
/// <param name="this should be 'int a' or 'string b' depending on the type passed"></param>
private void createPacket(Type type) // typeof(PacketOne) or typeof(PacketTwo)
{
      // ... 
}

public class PacketOne
{
    public PacketOne(int a)
    {

    }
}

public class PacketTwo
{
    public PacketTwo(string b)
    {

    }
}


Что я уже пробовал:

-----------------------------------------------------------------------------------------------

Richard Deeming

Если вы знаете тип во время компиляции, какое преимущество дает ваш фабричный метод по сравнению с прямым вызовом конструктора?

Если ты не если вы знаете тип во время компиляции, то как Visual Studio узнает, какие параметры типа следует отображать?

[no name]

Потому что я могу построить пакет по его типу или идентификатору, два разных метода. Я не знаю, как Visual Studio может это сделать, вот почему я задал этот вопрос.

1 Ответов

Рейтинг:
0

OriginalGriff

Да, все очень просто.
Перейдите в свойства проекта и перейдите на вкладку "сборка".
В разделе "Вывод" установите флажок "файл документации XML".
Закройте свойства.

Теперь украсьте свой метод XML-комментариями, введя косые черты над строкой объявления, и он "заполнит пробелы" для вас:

/// <summary>
///
/// </summary>
/// <param name="packetID"></param>
/// <param name="args"></param>
/// <returns></returns>
public static IGamePacket createPacket(int packetID, object[] args)
    {
    return (IGamePacket)construct(PacketRegistry.getPacketType(packetID), args);
    }
Введите детали, и Вы уедете - Intellisense автоматически подберет их для вас.


[no name]

Вы неправильно поняли - я обновил свой вопрос