C# работа с файловой системой

// получить список всех файлов во всех директориях начиная с базовой
Directory.GetFiles(dirPath, "*", SearchOption.AllDirectories); 

// получить список всех подпапок для текущей папки
Directory.EnumerateDirectories(dirPath); 

// получить список файлов в текущей папке
Directory.EnumerateFiles(dirPath); 

Получение информации о вызывающем методе с помощью CallerMemberNameAttribute

Иногда нам нужно получить информацию о методе в котором просиходит вызов фунции. Для этого есть аттрибут CallerMemberName - который позволяет получить имя вызывающего метода.

public void SomeFunc([CallerMemberName] string propertyName = null)
{
           Debug.WriteLine(propertyName);
}

MSDN:

https://msdn.microsoft.com/ru-ru/library/s53w0dze(v=vs.110).aspx

Поиск элементов в Selenium C#

Вот несколько селекторов:

 

By.XPath($"//span[contains(text(),'SomeText}')]")
By.XPath($"//a[contains(text(),'SomeText}')]")
By.XPath("//div[3]/a/span")
By.XPath("//div[@id='sidebar']/ul/li/ul/li[3]/div/a/span")
By.LinkText("Some Link Text")
By.CssSelector("#left-drawer-button > i.material-icons")
By.Id("ElementID")

 

Установка .NET Core

Для начала нужно установить DNVM – (.NET Version Manager (DNVM))
В Windows он устанавливается вместе с Visual Studio (если вы вберите  Microsoft Web Developer Tools)  либо установить самостоятельно выполнив скрипт:

powershell -NoProfile -ExecutionPolicy unrestricted -Command "&{$Branch='dev';iex ((new-object net.webclient).DownloadString('https://raw.githubusercontent.com/aspnet/Home/dev/dnvminstall.ps1'))}"
 
В Osx   нужно выполнить в консоли:
    curl -sSL https://raw.githubusercontent.com/aspnet/Home/dev/dnvminstall.sh | DNX_BRANCH=dev sh && source ~/.dnx/dnvm/dnvm.sh
 
После установки введите в консоли dnvm чтоб убедиться что все работает
 
Дальше введите нужно установить runtime
 
    dnvm install latest
 
если хотите бета версии тогда (dnvm install latest -Unstable –Persistent)
Для установки х64 версии coreclr
    dnvm install -r coreclr -arch x64 latest -u

теперь можно убиться что есть DNX и DNU, для этого выполните
dnx

а затем
dnu

и в завершении можно проверить все обновления
    dnvm upgrade
для обновления только coreclr
    dnvm upgrade -r coreclr
для обновления полного .net
    dnvm upgrade -r clr
для обновления mono
   dnvm upgrade -r mono

   dnvm update-self
в конце выполним
    dnvm list
чтобы увидеть список установленных CLR

Установить активный CLR:
    dnvm use 1.0.0-rc1-update1 -r coreclr -arch x64

Установить CLR по умолчанию:
    dnvm alias default 1.0.0-rc1-update1 -r coreclr -arch x64

Для удаления:
    dnvm uninstall 1.0.0-beta8 -r clr -arch x86
настройка закончена.
Теперь для запуска приложения нужно перейти в папку с ним
Выполнить там
     dnu restore
для обновления пакетов-зависимостей
а затем запустить, для консоли:
    dnx run
или для mvc
    dnx web


http://docs.asp.net/en/latest/getting-started/index.html
https://github.com/dotnet/corefxlab/

Как создать пустой проект generator-aspnet
https://www.npmjs.com/package/generator-aspnet



Работа с проектом
Запуск консольного проекта:
    dnx run
Запуск проекта сконкретным именем:
dnx run ConsoleApp1
для запуска web  париложения
    dnx web

dnx --configuration Release run

Сборка проекта
Построить проект:
     dnu build
Подготовить проект для nuget
     dnu pack

Подготовить проект к пубилкации
    dnu publish

http://docs.asp.net/en/latest/dnx/
http://docs.asp.net/en/latest/dnx/projects.html


.NET Core command-line (CLI) tools
https://github.com/dotnet/cli
Это удобный интрумент который включает в себя почти все вышеперечисленное
Для интсаляции надо скачать пакет с сайта а затем все просто:

dotnet new
dotnet restore  (dotnet restore -s https://myget.org/f/dotnet-core)
dotnet run



Реализация IEnumerable<T>

class MyClass<T> : IEnumerable<T>
{
	#region IEnumerable<T>

	public IEnumerator<T> GetEnumerator()
	{
		List<T> list = new List<T>();
		return list.GetEnumerator();
	}

	IEnumerator IEnumerable.GetEnumerator()
	{
		return this.GetEnumerator();
	}

	#endregion
}

Использование динамических объектов с динамическими параметрами

В пространстве имен System.Dynamic  есть класс  ExpandoObject - который представляет объект, члены которого можно динамически добавлять и удалять во время выполнения.

 

dynamic foo = new ExpandoObject();
           foo.Date = System.DateTime.Now;
           foo.IsSend = true;

Как узнать publicKeyToken .net библиотеки или приложения

Для того чтобы узнать какой publicKeyToken у библиотеки или исполняемого файла нужно выполнить комманду в консоли (Developer Command Promt)

 

sn –T myDLL.dll

как всегда, если в пути есть пробелы, то путь нужно взять в скобки "

 

sn –T "C:\\My Folder\myDLL.dll"


http://blogs.msdn.com/b/wriju/archive/2008/07/01/how-to-find-public-key-token-for-a-net-dll-or-assembly.aspx

видимость классов собрки

[assembly: System.Runtime.CompilerServices.InternalsVisibleTo("SimpleLibrary.Fakes, PublicKey=002…8b")]

 

так можно регулировать видимость классов для контрктеных соборок