Загрузка файлов большого размера в ASP.NET

для загрузки больших файлов необходимо прописать в web.config

<httpRuntime executionTimeout="3600" maxRequestLength="102400"  />

и далее:

<system.web> 
    <httpRuntime maxRequestLength="2097152"/> 
</system.web>

 

<system.webServer> 
      <security> 
          <requestFiltering> 
             <requestLimits maxAllowedContentLength="2147483648" /> 
          </requestFiltering> 
      </security> 
</system.webServer>

Обратите внимание, что maxAllowedContentLength в байтах тогда MaxRequestLength в килобайтах.

Динамическое создание переменных в C# и работы с ними.

Получение списка классов в сборке:
Тут мы получаем список классов в интересущем нас пространстве имен, можно также указать конкретный класс, или что либо еще.

String namespace = "ClassLibrary1.SomeNamspace";
var  library = (AppDomain.CurrentDomain.GetAssemblies().
Where(w => w.FullName.Contains(namespace)))

 Получение списка полей в классе:
Тип свойства можно указывать, скажем мы хотим получить публичные свойства.

Type type = library.GetType("ClassName");
PropertyInfo[] properties = 
type.GetProperties(BindingFlags.Instance | BindingFlags.Public);
foreach (PropertyInfo property in properties)
{
string propertyName = property.Name;
}

 Создание динамической переменной:

var currentType = (from i in library.GetTypes()
where i.FullName.Contains("CurrentClassName")
select i).FirstOrDefault();
var variable = Activator.CreateInstance(currentType); //создали перменную

 Записать данные в переменную:

currentType.GetProperty("ClassPropertyName").
SetValue(variable, "Новое значение свойства", null);

 Взять данные из переменной:

string getProperty = (string)currentType.GetProperty("ClassProperyName").
GetValue(variable, null);

Бинарная сериализция и десерилазиция обьтектов C#

Сериализация:

BinaryFormatter serializer = new BinaryFormatter();
using (MemoryStream s = new MemoryStream())
{
serializer.Serialize(s, ИМЯ_ПЕРЕМЕННОЙ_ДЛЯ_СЕРИАЛИЗАЦИИ);
s.ToArray();// получили сериалзиованный массив.
}

Десириализация:

BinaryFormatter serializer = new BinaryFormatter();
using (MemoryStream s = new MemoryStream(ИМЯ_ПЕРЕМЕННОЙ_ДЛЯ_ДЕСЕРИАЛИЗАЦИИ))
{
var newVariable = serializer.Deserialize(s); //создали переменную
}

C# Func<>

Общий вид таков Func<Входящий_тип, Возвращаемый_тип>((Имя_переменной_входящего_типа)=>{ реализация });

Результат можно присваивать переменным как во втором примере, или сначала делать делегат, а потом его использовать, как в первом примере.

Параметр передаеться через Invoke.

 

Пример 1:

var buildfunc = new Func<IList<SiteStructure>, string>( 
(lst) =>
{
string str = "|";
foreach (var item in lst)
{
str += item.Name;
}
return str + "|";
});
var lCurrentTemplate = from j in lModel.Templates
select new
{
ID = j.ID,
Name = j.Name,
ClassName = j.ClassName,
LastChange = j.LastChange,
NameSection = buildfunc.Invoke(j.SiteStructures)
};

 

Пример 2:

       

int a = new Func<string,int>((str) =>
{ 
int ret = 0;
if (int.TryParse(str, out ret))
{
return ret;
}
else
{
return -1;
}
}).Invoke("3");