English 中文(简体)
一个可以作为参数传递到任何地方的私有类——这样的事情可能吗?
原标题:A private class that can be passed anywhere as a parameter - is such a thing possible?
  • 时间:2011-02-10 20:48:58
  •  标签:
  • c#

我想定义一个类,ClassA,它可以作为参数传递给项目中的任何方法或类(全局范围)。然而,我想强制执行一个约束,以确保ClassA只能在单个ClassB的范围内实例化。换句话说,我希望该类具有相对于<code>ClassA</code>的私有作用域,同时仍然能够将该对象作为参数传递给分布在整个项目中的方法和类。

这可能吗?

最佳回答

您可以使<code>ClassA</code>抽象,并使具体实现为<code>ClassB</code<私有(作为嵌套类)。

问题回答

您可以使用内部构造函数使ClassA成为公共抽象类。

然后,ClassB可以定义从中派生的类,并创建“真实”实例。这将阻止程序集之外的任何人生成ClassA类型。

如果我能正确地理解你想在这里做什么。。。。。

使ClassB成为ClassA的嵌套类,并使ClassA的构造函数私有。





相关问题
Anyone feel like passing it forward?

I m the only developer in my company, and am getting along well as an autodidact, but I know I m missing out on the education one gets from working with and having code reviewed by more senior devs. ...

NSArray s, Primitive types and Boxing Oh My!

I m pretty new to the Objective-C world and I have a long history with .net/C# so naturally I m inclined to use my C# wits. Now here s the question: I feel really inclined to create some type of ...

C# Marshal / Pinvoke CBitmap?

I cannot figure out how to marshal a C++ CBitmap to a C# Bitmap or Image class. My import looks like this: [DllImport(@"test.dll", CharSet = CharSet.Unicode)] public static extern IntPtr ...

How to Use Ghostscript DLL to convert PDF to PDF/A

How to user GhostScript DLL to convert PDF to PDF/A. I know I kind of have to call the exported function of gsdll32.dll whose name is gsapi_init_with_args, but how do i pass the right arguments? BTW, ...

Linqy no matchy

Maybe it s something I m doing wrong. I m just learning Linq because I m bored. And so far so good. I made a little program and it basically just outputs all matches (foreach) into a label control. ...

热门标签