簡體   English   中英

使用if Interfaces

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM