Вы можете сделать это несколькими способами. Либо в конструкторе вашей библиотеки классов, либо используйте ее как службу, создав конструктор без параметров с методом, который выполняет вашу логику.
В идеальном решении я бы рекомендовал разбить ваш код на три проекта. Тот, который получает доступ к вашим данным и получает все, что вам нужно. Тот, который обрабатывает всю вашу логику с данными, полученными от уровня данных. Наконец, ваш проект MVC, который имеет дело только с уровнем логики.
Чтобы ответить на ваш вопрос сейчас:
public class UnlockUser
{
public UnlockUser(string user, string env)
{
//Do logic with params
}
}
В вашем контроллере добавьте:
else
{
//pass userid & envid to UnlockUser Class will go here
var foo = new UnlockUser(userId, envId);
var result = user + " | " + environment;
return Json(result, JsonRequestBehavior.AllowGet);
}
ИЛИ:
Добавьте конструктор без параметров в свой класс и метод, который принимает ваши параметры и делает некоторую логику. Используйте это так:
public class UnlockUser
{
public UnlockUser()
{ }
public <YourResultObject> <YourNewMethod> (string userId, string envId)
{
//Do some logic
return <YourResultObject>;
}
}
В методе вашего контроллера:
var foo = new UnlockUser();
foo.YourNewMethod(userId, envId);`
Хорошо, я нашел большую подсказку здесь от Anders Norås, что существует конструктор для конструктора CSharpCodeProvider, который выбирает некоторые варианты, включая версию компилятора. Когда я проверил документы MSDN, я нашел, что это более чисто для определения параметров компилятора в файле App.config. Вот пример:
<system.codedom>
<compilers>
<compiler
language="vb;vbs;visualbasic;vbscript"
extension=".vb"
type="Microsoft.VisualBasic.VBCodeProvider, System,
Version=2.0.3600.0, Culture=neutral,
PublicKeyToken=b77a5c561934e089"
compilerOptions="/optimize"
warningLevel="1" >
<providerOption
name="CompilerVersion"
value="v3.5" />
</compiler>
<compiler
language="c#;cs;csharp"
extension=".cs"
type="Microsoft.CSharp.CSharpCodeProvider, System,
Version=2.0.3600.0, Culture=neutral,
PublicKeyToken=b77a5c561934e089"
compilerOptions="/optimize"
warningLevel="1" >
<providerOption
name="CompilerVersion"
value="v3.5" />
</compiler>
</compilers>
</system.codedom>
Мое единственное разочарование состоит в том, что теперь я получаю две версии каждого компилятора от CodeDomProvider. GetAllCompilerInfo (). В документации по настройке говорится, что App.config должен переопределить machine.config настройки, но я получаю обоих. До сих пор App.config всегда после machine.config, таким образом, я просто позволяю более поздним переопределить более ранние. Кто-либо знает, как избежать дублирования?
Не уверенный, куда Вы идете с app.config's, но сюда - как можно сказать ему использовать 3,5 платформы.
var csc = new CSharpCodeProvider(new Dictionary<string, string>() { { "CompilerVersion", "v3.5" } });
http://blogs.msdn.com/lukeh/archive/2007/07/11/c-3-0-and-codedom.aspx