[英]Use if Interfaces
我有我的C#app 2類對象:
public class Alpha
{
public string IAmCalledAndy {get;set;}
public int IAmAnExtraField {get;set;}
}
public class Beta
{
public string IAmCalledJohn {get;set;}
}
我也有兩種方法:
public string testMethod1(Alpha myAlphaInstance)
{
StringBuilder sb = new StringBuilder();
sb.Append(JsonConvert.SerializeObject(myAlphaInstance));
return sb.ToString();
}
public string testMethod2(Beta myBetaInstance)
{
StringBuilder sb = new StringBuilder();
sb.Append(JsonConvert.SerializeObject(myBetaInstance));
return sb.ToString();
}
我想(對於整理和重構只有1種方法的情況:
public string testMethodGEneric(iObjectType myObjectInstance)
{
StringBuilder sb = new StringBuilder();
sb.Append(JsonConvert.SerializeObject(myBetaInstance));
return sb.ToString();
}
所以,我確實理解Alpha和Beta對象需要從一個名為iObjectType的接口繼承,但是iObjectType中有什么?
例如,實際上Class Alpha將包含Customer字段,而Class Beta將包含Address字段。
我希望得到太多嗎? 是否可以在不使其過於復雜的情況下完成,我可以堅持原來的2種方法?
你不需要任何其他東西,你有你的通用功能:
public string testMethodGEneric(object instance)
{
StringBuilder sb = new StringBuilder();
sb.Append(JsonConvert.SerializeObject(instance));
return sb.ToString();
}
JsonConvert.SerializeObject已經接受了Object類型。
您可以實現任意數量的接口,並且接口不必包含任何方法。 沒有指定任何功能的接口稱為“標記接口”
System.Web中的IRequiresSessionState
就是一個很好的例子。 此接口不公開任何方法,但如果使用Http Handler實現它,則在ProcessRequest(HttpContext context)
方法中處理請求期間會話狀態將可用。 Asp.Net將只提供會話狀態。
因此,只需要一個標記接口,比如IAppEntityBase
,沒有任何方法,並且在兩個類中都有它。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.