我试图使用API,我不能调用这个类的任何方法我怎样才能创建一个没有构造函数的类的对象,C#
namespace Ipfs.Api
{
/// <summary>
/// Manages the files/directories in IPFS.
/// </summary>
/// <remarks>
/// <para>
/// This API is accessed via the <see cref="IpfsClient.FileSystem"/> property.
/// </para>
/// </remarks>
/// <seealso href="https://github.com/ipfs/interface-ipfs-core/tree/master/API/files">Files API</seealso>
public class FileSystemApi
{
IpfsClient ipfs;
Lazy<DagNode> emptyFolder;
internal FileSystemApi(IpfsClient ipfs)
{
this.ipfs = ipfs;
this.emptyFolder = new Lazy<DagNode>(() => ipfs.Object.NewDirectoryAsync().Result);
}
/// <summary>
/// Add a file to the interplanetary file system.
/// </summary>
/// <param name="path"></param>
public Task<FileSystemNode> AddFileAsync(string path)
{
return AddAsync(
new FileStream(path, FileMode.Open, FileAccess.Read, FileShare.Read),
Path.GetFileName(path));
}
}
我想使用的API不修改它,我不能声明一个对象,因为我不能调用任何构造函数,并且我不能调用没有对象的任何方法,因为它们不是静态的。
我应该怎么办?
如果你打电话'VAR FSA会发生什么=新Ipfs.Api.FileSystemApi()' –
如果没有你所定义的构造函数? ,那么总是有一个没有由编译器定义的参数的默认构造函数,所以你总是可以调用新的FileSystemApi()。阻止这个的唯一方法是定义一个类FileSystemApi中的私有或内部构造函数。在你的情况下,FIleSystemApi的设计者不希望文件外的任何人能够在这个类上调用new。所以没办法调用创建自己的类的实例 – Steve
除非你使用反射http://stackoverflow.com/questions/2023193/c-sharp-instantiating-internal-class-with-private-constructor – Steve