什麼是未知參數方法的類的目的。這在OOP方面只是不合邏輯的。你打算怎麼稱呼這種方法?如果參數是同質的,那麼你可能只是這樣做:
public interface IBaseInterface
{
public int GetSomething(Dictionary<string, object> args); // keys matter
}
或
public interface IBaseInterface
{
public int GetSomething(params object[] args); // order matters
}
在某些情況下Func<>
/Action<>
高階功能可能是有用的。
如果您提供使用案例,我們將能夠做出更準確的答案。 顯示你如何打電話給這樣的方法,我會盡力展示如何讓它變得更好。
僅從技術邊回答你的問題,你可以做到以下幾點:
public abstract class BaseClass
{
protected BaseClass()
{
if (this.GetType().GetMethod("GetSomething") == null)
throw new InvalidOperationException("BaseClass subclasses should implement 'GetSomething' method");
}
}
public class ClassOne : BaseClass {
public int GetSomething (int a, int b, out int c) { }
}
public class ClassTwo : BaseClass {
public int GetSomething (int a, out string b) {}
}
它不會保證這種行爲在設計時,還要保證這些方法存在於運行時間。
使用接口! – Wheels73
爲什麼不實現這麼多的接口這是接口隔離原理 –
爲什麼你需要這個呢?爲什麼你想要一個可以做任何事情的方法的普通名字,並且可能還會返回任何內容?如果你想強制所有的類都有一個給定的成員使該成員在基類中抽象出來。然而,這隻有在簽名和API總是相同時纔有意義, – HimBromBeere