我試圖選擇一個名,通過我可以通過一些成像對象的接口:INeedSomething更好的名字...?
- 如果對象是INeedX然後SETX(一些x)的方法將被調用;
- 如果對象是INeedY,則調用SetY(some y)方法;
- 等等。 (有趣的是地獄,我知道:))
我試圖找到這種接口,一個不同的名字,但我不知道這一點。
有沒有人有一個想法如何命名INeedSomething接口?
我試圖選擇一個名,通過我可以通過一些成像對象的接口:INeedSomething更好的名字...?
我試圖找到這種接口,一個不同的名字,但我不知道這一點。
有沒有人有一個想法如何命名INeedSomething接口?
public interface INeed<T>
{
public T SetValue { set; }
}
通過使用泛型,通過你的接口傳遞的類型後面定義,這樣的:
class Needy : INeed<int>
{
private int internalValue;
public int SetValue { set {
internalValue = value;
} };
}
我並不是指INeedSomething的實現,並且實現不能是泛型的,因爲相同類型可能意味着很多事情,例如:INeed
如果你有這樣的班級,這將不起作用:'類需要:INeed
什麼名字IDependsOn您接口(又名IDependsOnUserId,IDependsOnTimeOut。)
那麼,INeed
接口可能是一個尷尬的設計的跡象。在我看來,你真正想要的是依賴注入,這是代碼等價的說明一個對象需要另一個對象的功能。因此不是
class Car:INeed<Engine> {
public Set(Engine engine)
}
,也許你真正想要的是
class Car {
public Car(Engine engine)
}
如果我是你,我會嘗試看看上面是適合你的情況,這是一個更標準的方法聲明需求/依賴關係
但是,我同意如果構造函數注入不可能,可以使用屬性注入。 – 2011-06-21 08:22:16
IRequire聽起來更好,但是,對於此接口的使用似乎是錯誤的。
使用屬性來代替:
class MyClass
{
[Required]
double X
{
get;
set;
}
}
所有類都需要自己的基類,他們實現的接口。你的問題很模糊,試着舉個例子。 – jgauffin 2011-05-09 07:38:22
接口的名稱應該描述對象可以執行的功能或功能,而不是描述該對象所需的數據的具體細節。這是一個實現細節,在接口名稱中沒有業務。 – MattDavey 2011-05-09 07:50:36
這聽起來不像一個界面。而且你很難命名它也可能表明你選擇了錯誤的工具。你能否擴展這個問題試圖解決你的問題?此外,如果它只是一個命名問題,你可以發佈實際代碼的用法(現在堅持使用INeedSomething)嗎? – 2011-05-09 07:58:37