1.寫個Lazy<T>的單例模式
public class SingleInstance{private static readonly Lazy<SingleInstance> instance = new Lazy<SingleInstance>(() => new SingleInstance());private SingleInstance(){}public static SingleInstance Instace => instance.Value;public void Test(){Console.WriteLine("Test");}}
2.單例模式會用在什么地方
數據庫連接
日志
線程池管理
3.數據庫連接釋放如何進行
SqlConnection實例化的對象con
con.Close();
con.Dispose();
3.發布-訂閱模式
發布的類定義一個delegate,定義一個event,兩者訪問權限與返回類型必須一致
發布的類實例化后
調用訂閱者的方法,訂閱者的方法的訪問權限以及返回類型必須和代理一致
PublishDemo publishDemo = new PublishDemo();publishDemo.MyEvent += new SubscriberDemo().Write;publishDemo.Test("aaa");
4.發布類方法調用的注意點:
internal class PublishDemo
{public delegate void MyDelegate(string str);public event MyDelegate MyEvent;public void Test(string s){//MyEvent(s);如果沒有訂閱者,會報錯MyEvent?.Invoke(s);}}
5.如何讀取一個類的屬性
a.類實例化一個對象
b.對象.GetType().GetProperties();//Properties,因為屬性幾乎不會只有一個
c.得到當前值,然后遍歷一下,即可獲取屬性名稱
MyEntity myEntity = new MyEntity();myEntity.Id = 1;myEntity.Name = "ddfffsdfsdfs";PropertyInfo[] items = myEntity.GetType().GetProperties();foreach (var item in items){Console.WriteLine(item.Name + ":" + item.PropertyType + ":"+ item.GetValue(myEntity));//item.GetValue(myEntity);用于取屬性值}