簡體   English   中英

是否可以阻止對類的成員變量的某些方法調用

[英]Is it possible to block certain method calls to a member variable of a class

我需要在Windows Phone 8, PhotoCaptureDevice的默認相機類的頂部創建一個Camera類

理想情況下,我希望建立一個兒童班

class CustomCaptureDevice:PhotoCaptureDevice{
    ....
    ....
}

這將使我既可以配置攝像頭設備,又可以通過CustomCaptureDevice提供一些其他幀處理技術。 不幸的是, PhotoCaptureDevice是一個sealed class ,因此我不能這樣做。

現在,我可以想到兩種可以幫助我解決問題的替代方法:

(1)

class CustomCaptureDevice
{
    private PhotoCaptureDevice captureDevice;

    // Implement all the functions of PhotoCaptureDevice here. And internally redirect them to PhotoCaptureDevice

}

上面的方法太麻煩了。 並且如果對PhotoCaptureDevice進行任何API更改,都可能需要對CustomCaptureDevice類進行重大更新。

(2)

class CustomCaptureDevice
{
    public PhotoCaptureDevice captureDevice;

    // Expose this variable to the user, who can set things in PhotoCaptureDevice as per his needs.

}

上面的方法似乎是一個更簡單的解決方案,因為在對PhotoCaptureDevice進行API更改的情況下,只需最少的更新即可。

看來(2)可以很好地滿足我的要求。 但是我還有一個額外的要求,因此(2)可能不合適。 我想禁用PhotoCaptureDevice中的某些配置功能,因為我想保留一些用戶無法配置的參數,例如曝光和聚焦。

如何在(2)的設計框架中完成此任務。 有可能嗎?

我知道可以通過方法(1)輕松實現。 請注意PhotoCaptureDevice密封類的約束。

第一種方法通常稱為裝飾器模式 (即包裝器)。 我相信這正是您需要的東西,因為它允許您為引擎蓋下的給定接口提供任何功能。

為了使該類可與應用程序其他部分中的PhotoCaptureDevice互換,您必須實現其相關接口:

public class ExtendedPhotoCaptureDevice : IDisposable, ICameraCaptureDevice
{
    private readonly ICameraCaptureDevice _actualImplementation;
    ...
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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