Как преобразовать из пользовательского типа в HttpPostedFileBase

У меня есть пользовательский объект из одного из классов в моем проекте. Так, например, объект abc от типа MyCustomClassМне нужно вызвать метод в моей программе, который был написан ранее. Этот метод занимает HttpPostedFileBase параметр и идет и сохраняет его на сервере. Итак, мой вопрос, как я могу конвертировать object чтобы иметь возможность передать его HttpPostedFileBase так что он может делать свою работу с этого момента.

Это то, что я искал и нашел до сих пор: как преобразовать byte[] в HttpPostedFileBase с помощью C#

2 ответа

Если ваш класс сериализуем, то вы можете использовать BinaryFormatter. Следующий метод может помочь:

public byte[] ConvertObjectToByteArray(object source)
{
    var formatter = new BinaryFormatter();
    using (var memoryStream = new MemoryStream())
    {
        formatter.Serialize(memoryStream, source);                
        return memoryStream.ToArray();
    }
}

Источник: преобразовать класс в байтовый массив + C#

Тогда вы можете использовать его по ссылке:

// code will look like below:
MyCustomClass abc = new MyCustomClass();
var byteArray = ConvertObjectToByteArray(abc);
HttpPostedFileBase objFile = (HttpPostedFileBase)new MemoryPostedFile(byteArray);

Если метод ожидает HttpPostedFileBase вам нужно будет сделать свой MyCustomClass наследовать от HttpPostedFileBase или просто создайте новый объект HttpPostedFileBase что получить информацию, необходимую от вашего MyCustomClass объект.

Другие вопросы по тегам