Is there any way to access a .NET application variable in the CLR trigger class?
No. Nor is there any way to access local variables between regular T-SQL Stored Procedures / Functions / Triggers. If you want to pass info from the app layer to a Trigger, you have the same options that are available to T-SQL stored procedures / ad hoc queries:
Store the value in the session via SET CONTEXT_INFO, which is a VARBINARY(128) datatype. You can read the value via the CONTEXT_INFO() function. This value is also readable in the sys.dm_exec_sessions DMV. If a process doesn't set the value, it will be NULL. This approach does not work if you are already using CONTEXT_INFO to store other information.
Create a local temp table (keyed to each session_id / SPID) and store the value in it. Then just SELECT from it in each Trigger. If a process doesn't create the local temp table, you will get an error on the SELECT query (so maybe you would wrap that in an IF OBJECT_ID(N'tempdb..#tempTableName') IS NOT NULL construct.
If using SQL Server 2016 (or newer), you can use the new SESSION_CONTEXT hash table.
In all three cases, after opening the SqlConnection in the app layer, execute a SQL statement to do the above via ExecuteNonQuery() and then do your other operation(s). Then, in the SQLCLR Trigger, the first step would be to connect to the current process / session using Context Connection = true; and grab the value.
Also, all three approaches noted above allow for T-SQL code to also pass this audit information to Triggers, whether they are T-SQL or SQLCLR. This is important because it is doubtful that the app will be responsible for 100% of the changes that occur. Usually people have SQL Agent Jobs and/or ad hoc support / release queries that makes changes that wouldn't have been able to get tracked if that required assigning a variable in the app layer.
I had assigned a value in CLR trigger class static variable (e.g _userid), but this value not getting while calling another static method in same class (which is called by me from trigger). why? If CLR class is called and assess by MSSQL server process, same class is also assessable with my app too.
Not only is SQL Server a different App Domains than your app is using, they are also entirely different CLR hosts.
Either way, you wouldn't have wanted the static variable to work since all SQL Server sessions will share a static variable, hence overwriting other sessions running at the same time ;-).