我有我的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字段。
我希望过多吗?可以做到这一点而不会让它变得过于复杂,我可能会坚持原来的两种方法吗?
答案 0 :(得分:2)
你不需要任何其他东西,你有你的通用功能:
public string testMethodGEneric(object instance)
{
StringBuilder sb = new StringBuilder();
sb.Append(JsonConvert.SerializeObject(instance));
return sb.ToString();
}
JsonConvert.SerializeObject已经接受了Object类型。
答案 1 :(得分:1)
您可以实现任意数量的接口,并且接口不必包含任何方法。没有指定任何功能的接口称为“标记接口”
System.Web中的 IRequiresSessionState
就是一个很好的例子。此接口不公开任何方法,但如果使用Http Handler实现它,则会在ProcessRequest(HttpContext context)
方法处理请求期间使用会话状态。 Asp.Net将只提供会话状态。
因此,只需要一个标记界面,比如IAppEntityBase
,没有任何方法,并且在两个类中都有。