using System;
using System.Reflection;
using System.Runtime.Remoting;
class MyClass {
public void MethodA(DateTime dt) {
Console.WriteLine("MethodA invoked at " + dt.ToLongTimeString());
}
}
class Starter {
static void Main() {
CreateLocal();
CreateRemote1();
CreateRemote2();
}
static void CreateLocal() {
object obj = Activator.CreateInstance(typeof(MyClass));
((MyClass)obj).MethodA(DateTime.Now);
}
static void CreateRemote1() {
ObjectHandle hObj = Activator.CreateInstance("library","MyClass");
object obj = hObj.Unwrap();
MethodInfo method = obj.GetType().GetMethod("MethodA");
method.Invoke(obj, new object[1] { DateTime.Now });
}
static void CreateRemote2() {
AppDomain domain = AppDomain.CurrentDomain;
object obj = domain.CreateInstanceFromAndUnwrap("library.dll","MyClass");
MethodInfo method = obj.GetType().GetMethod("MethodA");
method.Invoke(obj, new object[1] { DateTime.Now });
}
}
ASP.NET & Csharp (C#)
ASP.NET & Csharp (C#) , Here you can find my posts about .NET c# .
FriendlyName
using System;
using System.Collections.Generic;
using System.Text;
class Program {
static void Main(string[] args) {
AppDomain currentDomain = AppDomain.CurrentDomain;
Console.WriteLine(currentDomain.FriendlyName);
AppDomain secondDomain = AppDomain.CreateDomain("New AppDomain");
secondDomain.CreateInstance("AssemblyA", "AppDomains.Demo", true,System.Reflection.BindingFlags.CreateInstance, null, new object[] { 7, 3 }, null, null, null);
}
}
SetPrincipalPolicy
using System;
using System.Security;
using System.Security.Principal;
using System.Security.Permissions;
class Program {
static void Main(string[] args) {
AppDomain.CurrentDomain.SetPrincipalPolicy(PrincipalPolicy.WindowsPrincipal);
try {
ShowMessage();
} catch (SecurityException exception) {
Console.WriteLine(exception.Message);
}
}
[PrincipalPermissionAttribute(SecurityAction.Demand,Role = "BUILTINUsers")]
static void ShowMessage() {
Console.WriteLine("The current principal is logged in locally ");
Console.WriteLine("(they are a member of the local Users group)");
}
}
Configure the AppDomainSetup
using System;
class Test
{
public static void Main()
{
AppDomainSetup setupInfo = new AppDomainSetup();
setupInfo.ApplicationBase = @"C:MyRootDirectory";
setupInfo.ConfigurationFile = "MyApp.config";
setupInfo.PrivateBinPath = "bin;plugins;external";
AppDomain newDomain =
AppDomain.CreateDomain("My New AppDomain", null, setupInfo);
}
}
SetData, GetData
using System;
using System.Reflection;
using System.Collections;
class ListModifier{
public ListModifier()
{
ArrayList list = (ArrayList)AppDomain.CurrentDomain.GetData("Pets");
list.Add("turtle");
}
}
class MainClass{
public static void Main(){
AppDomain domain = AppDomain.CreateDomain("Test");
ArrayList list = new ArrayList();
list.Add("dog");
list.Add("cat");
list.Add("fish");
domain.SetData("Pets", list);
domain.CreateInstance("MainClass","Apress.VisualCSharpRecipes.Chapter03.ListModifier");
foreach (string s in (ArrayList)domain.GetData("Pets")) {
Console.WriteLine(s);
}
}
}
AppDomain.CreateDomain
using System;
class MainClass
{
public static void Main()
{
AppDomainSetup setupInfo = new AppDomainSetup();
setupInfo.ApplicationBase = @"C:MyRootDirectory";
setupInfo.ConfigurationFile = "MyApp.config";
setupInfo.PrivateBinPath = "bin;plugins;external";
AppDomain newDomain = AppDomain.CreateDomain("My New AppDomain", null, setupInfo);
}
}
ClientCertificates
using System;
using System.Net;
using System.Security.Cryptography.X509Certificates;
class MainClass {
public static void Main() {
WebRequest requestA = WebRequest.Create("http://www.yoursite.com");
requestA.Credentials = new NetworkCredential("userName", "password");
requestA.PreAuthenticate = true;
WebRequest requestB = WebRequest.Create("http://www.yoursite.com");
requestB.Credentials = CredentialCache.DefaultCredentials;
requestB.PreAuthenticate = true;
HttpWebRequest requestC = (HttpWebRequest)WebRequest.Create("http://www.yoursite.com");
X509Certificate cert1 = X509Certificate.CreateFromCertFile("TestCertificate.cer");
requestC.ClientCertificates.Add(cert1);
HttpWebRequest requestD = (HttpWebRequest)WebRequest.Create("http://www.yoursite.com");
X509Store store = new X509Store();
X509Certificate2Collection certs = store.Certificates.Find(X509FindType.FindBySubjectName,"Joe", false);
if (certs.Count == 1) {
requestD.ClientCertificates.Add(certs[0]);
} else {
certs = X509Certificate2UI.SelectFromCollection(
store.Certificates,
"Select Certificate",
"Select the certificate to use for authentication.",
X509SelectionFlag.SingleSelection);
if (certs.Count != 0) {
requestD.ClientCertificates.Add(certs[0]);
}
}
}
}